Originariamente 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:
non avevo effettuato quel controllo


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