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 :)
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! ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.