Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] generare numeri casuali

    ciao, vorrei generare dei numeri casuali con il C, ho provato la funzione rand() da stdlib.h ma se chiedo di stampare 10 numeri casuali la sequenza è sempre la stessa, inoltre non c'è la solita limitazione del risultato compreso tra 0 e 1, il che mi complica il problema

  2. #2

    Re: [C] generare numeri casuali

    Originariamente inviato da suomi_viking_86
    ciao, vorrei generare dei numeri casuali con il C, ho provato la funzione rand() da stdlib.h ma se chiedo di stampare 10 numeri casuali la sequenza è sempre la stessa,
    devi usare la funzione srand()

    codice:
    void srand(unsigned int seed);
    seed è il seme della generazione dei numeri pseudocasuali

    puoi usare come seme il valore restituito da time()

    codice:
    srand(time(NULL));
    inoltre non c'è la solita limitazione del risultato compreso tra 0 e 1, il che mi complica il problema
    Se ho ben capito vuoi un numero casuale reale tra 0 e 1
    quindi siccome la funzione rand() restituisce un numero casuale intero tra 0 e RAND_MAX.

    devi fare una cosa del genere

    codice:
    /* genera un numero reale tra [0.0, 1.0[ 1.0 escluso */
    double r = rand() / (RAND_MAX+1.0);
    codice:
    /* genera un numero reale tra [0.0, 1.0] 1.0 incluso */
    double r = rand() / (double)RAND_MAX;
    se ti servono i float in singola precisione sostituisci double con float.

  3. #3
    grazie, mi sai dire che cosa fa la funzione che usavo prima?

  4. #4
    Utente di HTML.it L'avatar di Guglie
    Registrato dal
    Dec 2002
    Messaggi
    1,572
    Originariamente inviato da suomi_viking_86
    grazie, mi sai dire che cosa fa la funzione che usavo prima?
    usavi rand.. che è la funzione giusta, l'esempio che ti ha postato internet ti spiega come evitare che la sequesza sia sempre la stessa (con srand)

    se vuoi generare numeri fra 0 e 100 cmq ti basta moltiplicare rand() per 100

    powered by GNU/Linux Gentoo
    A Elbereth Gilthoniel o menel palan-diriel, le nallon sí di-nguruthos! A tiro nin, Fanuilos!

  5. #5
    oooops rand()*100 non funziona, per avere un numero compreso tra 0 e 100 devo fare
    codice:
    n=rand()*100/RAND_MAX;
    cmq grazie a tutti e due adesso ho risolto il problema

  6. #6
    Un altro modo per gestire il range dei numeri casuali è:
    codice:
    int x = rand()%100
    Questo codice farà si che x possa assumere un valore compreso tra 0 e 99

  7. #7
    C'è un problema con l'utilizzo di % per generare numeri casuali con rand()

    descritto qui, sezione NOTES
    http://www.rt.com/man/srand.3.html

    un libro a cui fa riferimento è disponibile gratuitamente qui
    http://www.library.cornell.edu/nr/bookcpdf.html

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.