[JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
dawixboboz88

[JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da dawixboboz88 »

salve a tutti... :D

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...

Codice: Seleziona tutto

import java.util.*;

public class Estrazione {
	private Random generatore;
	private ArrayList<Integer> numeriGenerati;
	
	public void generaNumeri() {
		generatore = new Random();
		numeriGenerati = new ArrayList<Integer>();
		
		for (int i=0; i<10; i++) {
			numeriGenerati.add(generatore.nextInt(20)+1);
			if (i>0) {
				if (numeriGenerati.get(i) == numeriGenerati.get(i-1)) {
					numeriGenerati.remove(i);
					numeriGenerati.add(generatore.nextInt(20)+1);
				}
			}
		}
		
		Collections.sort(numeriGenerati);
		
		for (int i=0; i<numeriGenerati.size(); i++) {
			System.out.print(numeriGenerati.get(i) + " ");
		}		
	}
}
Ultima modifica di dawixboboz88 il sabato 10 ottobre 2009, 20:55, modificato 1 volta in totale.
proltessio
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3523
Iscrizione: giovedì 7 maggio 2009, 19:53
Contatti:

Re: [Java] Problema nella generazione di numeri casuali....

Messaggio da proltessio »

double casuale=Math.random()*10;
genera numeri casuali da 0 a 10
io solitamente faccio così
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Problema nella generazione di numeri casuali....

Messaggio da Zoff »

Perché fai un controllo poi generi un numero casuale indipendente...
Dovresti fare così:

Codice: Seleziona tutto

import java.util.*;

public class Estrazione {
	private Random generatore;
	private ArrayList<Integer> numeriGenerati;
	
	public void generaNumeri() {
		generatore = new Random();
		numeriGenerati = new ArrayList<Integer>();
		numeriGenerati.add(generatore.nextInt(20)+1);
		int rdm ;
		while(numeriGenerati.size()<10) {
			rdm = generatore.nextInt(20)+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) + " ");
		}		
	}
}
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Problema nella generazione di numeri casuali....

Messaggio da Zoff »

Può essere anche più utile parametrizzarlo:

Codice: Seleziona tutto

/**
	 * 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.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
dawixboboz88

Re: [Java] Problema nella generazione di numeri casuali....

Messaggio da dawixboboz88 »

Grazie 1000!!!! ora funge... xD
posso disturbarti x l'ultima volta? nn ho capito questa parte di codice... puoi spiegarmela?
int rdm ;
while(numeriGenerati.size()<10) {
rdm = generatore.nextInt(20)+1;
if ( !numeriGenerati.contains(rdm)) {
numeriGenerati.add(rdm);
}
}
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Problema nella generazione di numeri casuali....

Messaggio da Zoff »

Codice: Seleziona tutto

//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.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
dawixboboz88

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da dawixboboz88 »

grazie 1000!!! ;) sei stato gentilissimo... ;D
IuZ
Prode Principiante
Messaggi: 9
Iscrizione: domenica 7 gennaio 2007, 13:41

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da IuZ »

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.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da Zoff »

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.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
IuZ
Prode Principiante
Messaggi: 9
Iscrizione: domenica 7 gennaio 2007, 13:41

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da IuZ »

Zoff ha scritto:
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.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da Zoff »

è 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.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
IuZ
Prode Principiante
Messaggi: 9
Iscrizione: domenica 7 gennaio 2007, 13:41

Re: [JAVA] Problema nella generazione di numeri casuali.... [RISOLTO]

Messaggio da IuZ »

Ah già, non ho pensato al controllo inutile che avrebbe fatto dopo.
Ciao, grazie mille.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti