Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Scelta valori random

    salve ragazzi

    scrivo per un piccolo problema sulla scelta di numeri random.
    Io ho utilizzato la libreria java.util.Random nel segente modo

    Random creator=new Random(); // creo oggetto della classe Random per scegliere un valore casuale
    NeighbourTable choiceNeighbours=new NeighbourTable(); // creo lista dei Neighbour scelti per lo shuffle

    sizeTbl=neighbourTable.size(); // ottengo la dimensione della tabella
    if (sizeTbl>1)
    {
    while (i<n-1)
    {
    choice=creator.nextInt(n); // genera un numero casuale
    System.out.println(" dimensione tabella: " + sizeTbl + " " + "scelta Random: " + choice);

    /* A partire dal valore random calcolato viene scelto il Neighbour che si trova nella
    * relativa posizione della tabella dei Neighbour */
    Neighbour newChoice=neighbourTable.getNeighbour(choice);
    choiceNeighbours.add(newChoice); // aggiunto alla tabella dei Neighbour da scambiare
    i++;
    }
    }


    ma il problema sta nel fatto che il comando choice=creator.nextInt(n); ogni volta genera un valora casuale differente.... come faccio a eliminari tra i possibili valori da schegliere quelli effettivamente già scelti??????

    Inoltre nel mio programma scelgo un valore intero per poi scegliere il corrispondente oggetto che si trova all'interno della tabella di tali oggetti, esiste una maniera più diretta e quindi meno sporca per poter eseguire tale scelta???

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Scelta valori random

    Originariamente inviato da pdicanio2004
    come faccio a eliminari tra i possibili valori da schegliere quelli effettivamente già scelti??????
    Cioè in pratica vuoi ottenere numeri "unici", giusto? C'è una buona soluzione, che consiglio spesso, ma che si può fare se il numero di valori possibili non è enorme. Si crea a priori un array che contiene tutti i possibili valori estraibili (anche messi in ordine). Poi man mano si estrae un numero casuale tra 0 e size-1. Si prende il valore nell'array e si "compatta" e si riduce "logicamente" la dimensione dell'array.

    Avevo fatto un esempio di questa tecnica in questa discussione.

    Originariamente inviato da pdicanio2004
    Inoltre nel mio programma scelgo un valore intero per poi scegliere il corrispondente oggetto che si trova all'interno della tabella di tali oggetti, esiste una maniera più diretta e quindi meno sporca per poter eseguire tale scelta???
    Beh, non mi sembra poi tanto "sporca". Insomma ... alla fin fine è quello che va fatto.
    Se poi proprio vuoi, potresti "incapsulare" questa logica dentro il tuo oggetto in modo da avere ad esempio un metodo extractRandomNeighbour(), tanto per dire. Questo però presuppone di mettere il Random nell'oggetto. Potrebbe non essere una buona cosa dal punto di vista del "design".
    In alternativa puoi creare un'altra classe in cui si passa (nel costruttore) il Random e il tuo NeighbourTable. E poi definisci un metodo che estrae casualmente un oggetto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie mille!!
    codice:
    Si crea a priori un array che contiene tutti i possibili valori estraibili (anche messi in ordine). Poi man mano si estrae un numero casuale tra 0 e size-1. Si prende il valore nell'array e si "compatta" e si riduce "logicamente" la dimensione dell'array
    mi sembra una ottima soluzione ;-) la metto in partica subito eheehhe

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.