PDA

View Full Version : rand() generare numero casuale da intervallo non consecutivo


bobosg
09-12-2009, 11:52
buongiorno a tutti,
qualcuno sa dirmi come si fa con la funzione rand() a generare numeri casuali da un intervallo di numeri non consecutivi?
ad esempio generare ogni volta un numero casuale dall'intervallo: 6, 10, 14, 18, 22.
linguaggio C

grazie a tutti!!!

ndakota
09-12-2009, 12:29
Mi viene in mente che potresti mettere quei valori in un array e generare l'indice. Dipende se conosci quei valori.

bobosg
09-12-2009, 13:05
può essere un'idea...
io cmq cercavo un'istruzione per agire direttamente sulla formula di traslazione del risultato di rand:

n = a + rand() % b;
a=valore di traslazione
b=fattore di scala

un aiuto?

fero86
09-12-2009, 14:11
ad esempio generare ogni volta un numero casuale dall'intervallo: 6, 10, 14, 18, 22. avró capito male ma a me quello non sembra un intervallo...


n = a + rand() % b;
a=valore di traslazione
b=fattore di scala b non é un fattore di scala. fai attenzione a come generi i numeri casuali: l'operazione di modulo ne modifica la distribuzione quando il modulo non é un divisore di RAND_MAX.

c'é una guida bellissima in proposito nella sottosezione dei tutorials.

blackgin
09-12-2009, 14:30
Mi viene in mente che potresti mettere quei valori in un array e generare l'indice. Dipende se conosci quei valori.

Secondo me questa è un'ottima soluzione.
E tanto per essere pignoli, numeri isolati non costituiscono un intervallo. :P

Ah dovresti pure inserire [C] nel titolo del topic, altrimenti il primo mod che passa te lo chiude.

wingman87
09-12-2009, 16:14
Ok, tu intendevi un valore della "sequenza". Beh non è difficile nel tuo esempio:
n=6+4*rand()%5;

cionci
09-12-2009, 16:46
Thread chiuso
|
V
http://www.hwupgrade.it/forum/showthread.php?t=1649196