PDA

View Full Version : [JAVA] generare numeri casuali


noodles83
10-09-2006, 19:00
Il mio problema è quello di riempire un array , di interi, di n posizioni, con numeri casuali compresi nell intervallo da 0 a n.

come posso fare?

pensavo che bastava scrivere:

for(int i=0;i<array.length;i++){
array[i]=(int) Math.random() * n;
}

invece mi viene un array di tutti 0. perchè? :muro:

noodles83
10-09-2006, 19:35
non ho trovato la risposta a prima, ma ho risolto con la classe Random.

Se cmq mi sapete dare una risposta con il metodo di prima, mi farebbe piacere ugualmente!

grazie ciao :)

andbin
10-09-2006, 19:38
for(int i=0;i<array.length;i++){
array[i]=(int) Math.random() * n;
}

invece mi viene un array di tutti 0. perchè? :muro:Ah .... classico errore dovuto alla non conoscenza della precedenza degli operatori!
L'operatore del cast (T) ha una precedenza maggiore rispetto all'operatore della moltiplicazione *. Questo vuol dire che il double restituito da Math.random() (che ha valore 0.0 <= n < 1.0) viene convertito ad int, diventando così sempre zero e poi dopo viene fatta la moltiplicazione con n. Risultato: sempre zero. ;)

Soluzione:
array[i]=(int) (Math.random() * n);

franksisca
10-09-2006, 19:50
Ah .... classico errore dovuto alla non conoscenza della precedenza degli operatori!
L'operatore del cast (T) ha una precedenza maggiore rispetto all'operatore della moltiplicazione *. Questo vuol dire che il double restituito da Math.random() (che ha valore 0.0 <= n < 1.0) viene convertito ad int, diventando così sempre zero e poi dopo viene fatta la moltiplicazione con n. Risultato: sempre zero. ;)

Soluzione:
array[i]=(int) (Math.random() * n);
spiegazione perfetta :read: :read: :read:

noodles83
10-09-2006, 21:12
ahhhhh!! adesso ho capito!! :D

grazie della risposta! anche se ho risolto lo stesso, mi è stato utile capire il perchè del mio errore! ;)