Ciao,
oggi ho un problemino un po' stupido ma ho bisogno del vostro aiuto:
devo fare un random da 1 a 3!
se io utilizzo Math.round(Math.random()+2) il random avviene tra il 2 e il 3; qual'è il metodo giusto?
Grazie.
Ciao,
oggi ho un problemino un po' stupido ma ho bisogno del vostro aiuto:
devo fare un random da 1 a 3!
se io utilizzo Math.round(Math.random()+2) il random avviene tra il 2 e il 3; qual'è il metodo giusto?
Grazie.
FaX
codice:Math.round(Math.random()*2)+1
regalami un oggi da favola...e il domani bhe!?non mi importa se tu 6 con me! ©Ily
Effettivamente se nel mio codice il numero random viene 0 ottengo 0 e non 1...
![]()
No, mi permetto di correggere Yassassin (quale onore), la sua formula non è precisa. Usa questa:
ciaocodice:Math.round(Math.random()*3)%3+1;![]()
sinceramente non ho capito la tua modificaOriginariamente inviato da Marsellus Wallace
No, mi permetto di correggere Yassassin (quale onore), la sua formula non è precisa. Usa questa:
ciaocodice:Math.round(Math.random()*3)%3+1;![]()
![]()
la mia funzione -> Math.round(Math.random()*2) ti restituisce un valore compreso tra 0 e 2 -> incrementato di 1 avrai sempre un valore compreso tra 1 e 3
la tua funzione -> Math.round(Math.random()*3) ti restituisce un valore compreso tra 0 e 3 -> quindi dividi il valore per 3 e ti ritrovi il resto (significato del %) -> al resto aggiungi 1 e avari un valore compreso tra 1 e 3
la differenza tra la mia funzione e la tua è che io faccio 2 passaggi tu 3![]()
correggimi se sbaglio.
ps: la funzione di Shork è comunque corretta perchè Math.random() non restituisce mai 0 ma sempre 0.qualche cosa![]()
regalami un oggi da favola...e il domani bhe!?non mi importa se tu 6 con me! ©Ily
Non posso utilizzare tutte e tre i suggerimenti e, quindi, far fede alla par condicio ma vi ringrazio a tutti!
L'avevo già utilizzato altre volte, ragionando con la mia testolina, ma l'ora mi faceva pensare ad un bel piatto di pasta...
SALUTI!![]()
FaX
La tua formula non rende una distribuzione uniforme: il numero 2 viene estratto con probabilità doppia rispetto agli altri due :bubu:Originariamente inviato da Yassassin
la differenza tra la mia funzione e la tua è che io faccio 2 passaggi tu 3![]()
correggimi se sbaglio.
edit: premesso, in ogni caso, che la funzione di shork era corretta come dici tu e non c'avevo nemmeno pensato![]()
non avevo effettuato quel controlloOriginariamente inviato da Marsellus Wallace
La tua formula non rende una distribuzione uniforme: il numero 2 viene estratto con probabilità doppia rispetto agli altri due :bubu:![]()
questo è il risultato:
tuo esempio:
1 = 9944 - 2 = 10022 - 3 = 10034
tempo esecuzione = 1038 millisecondi
mio esempio:
1 = 7552 - 2 = 14884 - 3 = 7564
tempo esecuzione = 1018 millisecondi
Shork esempio:
1 = 10016 - 2 = 9985 - 3 = 9999
tempo esecuzione = 1015 millisecondi
i risultati parlano chiaro...
promossi:
Math.round(Math.random()*3)%3+1;
Math.ceil(Math.random()*3);
bocciati:
Math.round(Math.random()*2)+1![]()
uso un arma segreta e dico che questo è il codice migliore:
k = random(3)+1;
1 = 9882 - 2 = 10138 - 3 = 9980
tempo esecuzione = 561 millisecondi
![]()
![]()
regalami un oggi da favola...e il domani bhe!?non mi importa se tu 6 con me! ©Ily
allora, vada per
k = random(3)+1;
:adhone:
FaX