Newsgroup: it.comp.java
Titolo: aiuto classe Random per Tombola

Mi serve un generatore di numeri da 0 a 40...ho però bisogno che una volta
uscito un numero, il calcolatore non lo consideri più (mi spiego meglio, se
ad esempio esce il numero 9, la seconda volta che eseguo il metodo mi deve
considerare tutti i numeri da 0 a 40 escluso il 9 e così via....DEVE
FUNZIONARE COME LA TOMBOLA!!)..
Avevo pensato al seguente codice:
class Caso{
public static void main (String[] args){
 Random caso = new Random();
 int num = caso.nextInt(40);
 }
ke però non ha memoria (cioè non tiene conto dei numeri che sono già
usciti)....E' impensabile mettere una selezione che mi dica se il numero è
già uscito oppure! (perchè mettiamo che siano usciti 38 numeri su 40, gli
ultimi due verrebbero calcolati in un tempo troooppo lungo!!)
grazie

 ha scritto nel messaggio
news:ejYO9.28164$Q%4.87...@news1.tin.it...


uscito un numero, il calcolatore non lo consideri più
[CUT]
Come è già stato suggerito da Antonio Pelleriti nell'altro thread, vai a 
vedere l'esempio (completo e con sorgenti!) che c'è sul Tutorial 
(
http://java.sun.com/docs/books/tutorial/together/index.html
).
Essendo completo... risolve *anche* il problema che proponi. ;-)
-- 
Ciao
	Fabrizio C.

 ha scritto nel messaggio
news:ejYO9.28164$Q%4.87...@news1.tin.it...


ho dato un'occhiata all'esempio del Bingo del tutorial Sun,
hanno usato la seguente classe, che riempie il vettore balls
con i numeri in ordine sequenziale, e poi li rimuove uno ad uno
in modo random nel metodo getNext():
class RandomBag implements BagOfBalls {
    private boolean DEBUG = false;
    private Vector balls = new Vector(BingoBall.MAX);
    private Random generator = new Random(System.currentTimeMillis());
    RandomBag () {
 for (int j = BingoBall.MIN; j <= BingoBall.MAX; j++)
     balls.addElement(new BingoBall(j));
    }
    public BingoBall getNext() throws NoMoreBallsException {
 if (balls.size() > 0) {
     int num = (int)(generator.nextDouble() * balls.size());
     BingoBall returnThis = (BingoBall)balls.elementAt(num);
     balls.removeElementAt(num);
     return returnThis;
 } else {
     throw new NoMoreBallsException();
 }
    }
}

 ha scritto nel
messaggio news:Wi_O9.54724$Ou4.1...@twister2.libero.it...


 ha scritto nel messaggio
news:lt_O9.28838$Q%4.89...@news1.tin.it...


Java wrote:
...magari è possibile passare da un array a una List ???).
Sì :) Nella classe Arrays:
public static List asList(Object[] a)
ti dà la possibilità di vedere un array come se fosse una lista.
Però visto che comunque gli oggetti wrapper (es. Integer) li devi istanziare 
(per creare l'array di Object), tanto vale utilizzare direttamente una 
lista che ti offre gli iteratori, o no?
ciao :)
pole

 ha scritto nel messaggio
news:aui01k$iqe$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:aui01k$iqe$1...@lacerta.tiscalinet.it...


 carte), come faccio a mescolarlo ???
perchč non seguire la procedura reale e implementare un metodo mischia con
parametro il numero di "mescolamenti"
e che ad ogni ciclo prenda 2 o piů carte in modo casuale e le scambi di
posto?

 classe List (è una interfaccia)....
Un'interfaccia è un riferimento generico per vari tipi che hanno le stesse 
funzionalità. Ad esempio ArrayList e Vector (classi concrete) sono validi 
tipi "List". Comunque nel tuo caso puoi creare anche solo l'array di 
oggetti: a darti la lista giusta ci pensa il metodo asList().
Ecco in breve cosa dovresti fare:
// Crei l'array con i numeri
public static final int NUM_VALORI = quanti_ne_vuoi;
Integer[] values = new Integer[NUM_VALORI];
// Riempi l'array
for(...) // NOn mi pare il caso di scrivere il ciclo :-)
// Mischi tutto:
Collections.shuffle( Arrays.asList( values ) );
... e ti ritrovi col tuo bell'array di numeri mischiati.
ciao :)
pole