[C] numero a caso
mi piacerebbe fare un programma in linguaggio c
che riesce a calcolare un numero a caso
ma non so come funziona questo tipo di meccanismo
magari indicandogli il numero massimo della possibilita
es:
seleziona il numero : da 0 a 8
il numero a caso e 6 !
potete aiutarmi ?
grazie ciao
che riesce a calcolare un numero a caso
ma non so come funziona questo tipo di meccanismo
magari indicandogli il numero massimo della possibilita
es:
seleziona il numero : da 0 a 8
il numero a caso e 6 !
potete aiutarmi ?
grazie ciao
Risposte
Usi la funzione rand() e se e come sup usi % 8 di modo che te la blocchi li(al massimo scarta pure i numeri $<0$
Il metodo fornito da Luc@s non fornisce una probabilità uniforme.
rand() restituisce un numero "casuale" tra 0 e RAND_MAX (che è una costante definita in stdlib.h). Se il tuo massimo non divide RAND_MAX allora ovviamente ci sono numeri con una probabilità più alta di uscire di altri. Se è solo una applicazione giocattolo non ha molta importanza ma in altre situazioni può essere importante.
rand() deve essere inizializzato. Si tratta infatti di un generatori di numeri pseudo-casuali (Pseudorandom number generator o PRNG in inglese) e cioè algoritmi che dati dei valori iniziali calcolano una successione di numeri che "sembrano casuali". Per inizializzare rand() si usa la funzione srand() che richiede il passaggio di un singolo unsigned int. Normalmente vengono usate funzioni come time(NULL) o clock() in time.h per fornire il dato iniziale (che prende il nome di seme - seed in inglese) a srand().
È un argomento molto discusso nei forum e una ricerca su google (soprattutto se fatta in inglese) fornirà tantissimi di risultati con ulteriori informazioni e consigli.
rand() restituisce un numero "casuale" tra 0 e RAND_MAX (che è una costante definita in stdlib.h). Se il tuo massimo non divide RAND_MAX allora ovviamente ci sono numeri con una probabilità più alta di uscire di altri. Se è solo una applicazione giocattolo non ha molta importanza ma in altre situazioni può essere importante.
rand() deve essere inizializzato. Si tratta infatti di un generatori di numeri pseudo-casuali (Pseudorandom number generator o PRNG in inglese) e cioè algoritmi che dati dei valori iniziali calcolano una successione di numeri che "sembrano casuali". Per inizializzare rand() si usa la funzione srand() che richiede il passaggio di un singolo unsigned int. Normalmente vengono usate funzioni come time(NULL) o clock() in time.h per fornire il dato iniziale (che prende il nome di seme - seed in inglese) a srand().
È un argomento molto discusso nei forum e una ricerca su google (soprattutto se fatta in inglese) fornirà tantissimi di risultati con ulteriori informazioni e consigli.
Per il tuo caso l'unica soluzione, com'è stato già detto, può essere rand..in più, se vuoi ottenere ogni volta un numero diverso, devi includere la libreria e poi inserisci l'istruzione srand ( time(NULL)); nella main...
Ciao
Ciao
"Samy21":
Per il tuo caso l'unica soluzione, com'è stato già detto, può essere rand..in più, se vuoi ottenere ogni volta un numero diverso, devi includere la libreriae poi inserisci l'istruzione srand ( time(NULL)); nella main...
Ciao
L'unico non direi... Una persona può benissimo implementare la sua personale libreria random, implementando uno dei centinaia di algoritmi di generazione conosciuti.
"vict85":
L'unico non direi... Una persona può benissimo implementare la sua personale libreria random, implementando uno dei centinaia di algoritmi di generazione conosciuti.
Sicuramente...