Originariamente inviato da satifal
Nel primo caso il risultato di Math.random() viene castato ad int, ma essendo esso sempre compreso tra 0 e 1 tale cast comporterà sempre un arrotondamento per difetto e quindi a 0 tranne quando esso varrà 1.
Cioè mai, dato che Math.random() restituisce un valore compreso fra 0 (incluso) e 1 (escluso).

scusa ma perchè moltiplichi per 65000??
Solo per avere un valore ragionevolmente grande e disperso che mi consenta di avere un valore in modulo 100 ragionevolmente casuale... Si potrebbe usare tranquillamente un valore diverso. In realtà esistono valori più adatti, ma per lo scopo della mia dimostrazione era sufficiente quel valore.

Dato che la funzione Math.random() restituisce un valore double compreso fra 0 (incluso) e 1 (escluso), moltiplicando per un valore ragionevolmente grande si ottiene da un lato un valore compreso fra 0 e il valore per cui si moltiplica (meno un epsilon), e dall'altro una dispersione maggiore dei valori. Esempio banale: si supponga che due invocazioni di Math.random() restituiscano i seguenti valori:

0.46xxx
0.49yyy

Supponiamo di volere dei numeri casuali compresi fra 0 e 9.
Scegliendo come moltiplicatore 10 otteniamo:

(0.46xxx * 10) = 4.6xxx
(0.49yyy * 10) = 4.9yyy

Castando ad int ed effettuando il modulo, otteniamo 4 in entrambi i casi:

Se scegliamo, invece, come moltiplicatore 100, otteniamo

(0.46xxx * 100) = 46.xxx
(0.49yyy * 100) = 49.yyy

Che castati ad intero danno 46 e 49. Effettuando il modulo otteniamo, rispettivamente, 6 e 9.

Con gli stessi valori della funzione Math.random() abbiamo ottenuto risultati "più dispersi"
scegliendo un numero ragionevolmente grande.

Ciao.