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
![]()
![]()

Rispondi quotando