Non riesco a trovare il giusto algoritmo per inserire in un array di lunghezza 10 10 numeri casuali diversi tra loro. Qualcuno saprebbe aiutarmi?
Non riesco a trovare il giusto algoritmo per inserire in un array di lunghezza 10 10 numeri casuali diversi tra loro. Qualcuno saprebbe aiutarmi?
scusa fai un controllo ogni volta che generi un numero casuale scorrendo il vettore e se trovi un numero uguale ripeti la generazione :master:Originariamente inviato da Ghneuma
Non riesco a trovare il giusto algoritmo per inserire in un array di lunghezza 10 10 numeri casuali diversi tra loro. Qualcuno saprebbe aiutarmi?
L'unico algoritmo funzionante che sono riuscito a produrre è questo:
Ma sono sicuro esista un algoritmo più efficiente, sarebbe impensabile applicare questo codice ad array di lunghezza 100 o 1000!codice:import java.util.Random; public class Prova { public static void main(String[] args) { Random generator = new Random(); int[] data = new int[10]; for (int n = 0; n < data.length; n++) { int randomNumber = 1 + generator.nextInt(10); while (randomNumber == data[0] || randomNumber == data[1] || randomNumber == data[2] || randomNumber == data[3] || randomNumber == data[4] || randomNumber == data[5] || randomNumber == data[6] || randomNumber == data[7] || randomNumber == data[8] || randomNumber == data[9]) { randomNumber = 1 + generator.nextInt(10); } data[n] = randomNumber; } for (int e : data) { System.out.print(e + " "); } } }
Certo. Ecco un esempio:Originariamente inviato da Ghneuma
Ma sono sicuro esista un algoritmo più efficiente
codice:import java.util.*; public class Prova { public static void main (String[] args) { int[] numeri = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int size = numeri.length; Random r = new Random (); while (size > 0) { int idx = r.nextInt (size); System.out.println ("Estratto numero: " + numeri[idx]); numeri[idx] = numeri[--size]; } } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet