mi servirebbe un info... stò cercando di scrivere un programma che generi numeri casuali univoci... io ho provato così ma nn funge... avete delle idee? grazie a tutti x l'aiuto...
/**
* Stampa su standard output una lista di numeri
* @param n Quantita' di numeri da generare
* @param max Numero massimo da generare
*/
public void generaNumeri(int n, int max) {
generatore = new Random();
numeriGenerati = new ArrayList<Integer>();
numeriGenerati.add(generatore.nextInt(max)+1);
int rdm ;
while(numeriGenerati.size()<n) {
rdm = generatore.nextInt(max)+1;
if ( !numeriGenerati.contains(rdm)) {
numeriGenerati.add(rdm);
}
}
Collections.sort(numeriGenerati);
for (int i=0; i<numeriGenerati.size(); i++) {
System.out.print(numeriGenerati.get(i) + " ");
}
}
Ultima modifica di Zoff il domenica 11 ottobre 2009, 1:10, modificato 1 volta in totale.
//Variabile in cui memorizzare il numero casuale
int rdm ;
//Ciclo finché l'arraylist non contiene 10 elementi
while(numeriGenerati.size()<10) {
//Genero il numero casuale e lo metto in rdm
rdm = generatore.nextInt(20)+1;
//Controllo che nell'arraylist rdm non sia già presente
if ( !numeriGenerati.contains(rdm)) {
//Non essendo presente rdm lo aggiungo
numeriGenerati.add(rdm);
}
}
Ultima modifica di Zoff il domenica 11 ottobre 2009, 1:10, modificato 1 volta in totale.
IuZ ha scritto:
Riporto alla luce questa vecchio thread x una domanda velocissima:
la riga:
numeriGenerati.add(generatore.nextInt(max)+1);
potrebbe anche essere tolta, giusto? (Tanto fa la stessa cosa dopo)
Ciao, grazie.
Direi proprio di no perché otterresti un loop infinito visto che la condizione del while è "numeriGenerati.size()<10" e senza numeriGenerati.add(....) numeriGenerati.size() non cambia.
IuZ ha scritto:
Riporto alla luce questa vecchio thread x una domanda velocissima:
la riga:
numeriGenerati.add(generatore.nextInt(max)+1);
potrebbe anche essere tolta, giusto? (Tanto fa la stessa cosa dopo)
Ciao, grazie.
Direi proprio di no perché otterresti un loop infinito visto che la condizione del while è "numeriGenerati.size()<10" e senza numeriGenerati.add(....) numeriGenerati.size() non cambia.
mmm... mi sa che mi sono espresso male...
io intendevo l'istruzione "numeriGenerati.add(generatore.nextInt(max)+1);" quella che metti sopra il while.
Mi chiedevo perché prima del while aggiungessi un numero dentro "numeriGenerati".
Ciao, grazie.
è solo una questione di performance.
Il primo numero che estrai essendo il primo non può essere già estratto, quindi il controllo del contains() nell'if all'interno del while è superfluo.
Ai fini del risultato però hai ragione, non cambia.