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

    numeri casuali [classe] con Random

    buongiorno, avrei un problema da risolvere:
    ho bisogno di una classe che ogni volta che la richiamo effettua un numero casuale da 0 a 51 senza ripetizioni di numeri...purtroppo non ho ancora abbastanza bagaglio tecnico e quindi chiedo a voi un consiglio...
    vi scrivo qua sotto la classe creata da me e aspetto consigli e critiche ...
    p.s.: per il

    codice:
    package esercizio;
    public class NumeroCasuale {
    
        private int numero;
        private boolean [] b=new boolean [10];
    
        public boolean b () {
            for (int i=0;i<b.length;i++) {
                b[i]=false;
            }
            return b[10];
        }
    
        public NumeroCasuale (int numero) {
            this.numero=numero;
        }
    
        public int getNumero () {
            return numero;
        }
        public void setNumero (int numero) {
            this.numero=numero;
        }
    
        public int numero () {
            numero= [???] .nextInt(52);
                switch (numero) {
                    case 0:
                        if (b[0]) {
                            numero= [???] .nextInt(52);
                        } else {
                            System.out.println(numero);
                            b[0]=true;
                        }
                        break;
                    case 1:
                        //...
                        //...
                }
            return numero;
        }
    
    }

  2. #2
    Se ho capito bene quello che vuoi fare questa classe genera numeri compresi tra 0 e 51:
    codice:
    public class NumeroCasuale
    {
    	private List<Integer> numbers;
    
    	private Random random;
    
    	public NumeroCasuale()
    	{
    		this.numbers = new ArrayList<Integer>();
    		random = new Random();
    	}
    
    	public int getNumber()
    	{
    		if (numbers.size() < 51)
    		{
    			Integer newNumber = null;
    			do
    			{
    				newNumber = Math.abs(random.nextInt(52));
    			}
    			while (numbers.contains(newNumber));
    			this.numbers.add(newNumber);
    			return newNumber;
    		}
    		else
    		{
    			throw new RuntimeException("Numeri finiti");
    		}
    	}
    
    	public static void main(String[] args)
    	{
    		NumeroCasuale numeroCasuale = new NumeroCasuale();
    		List<Integer> list = new ArrayList<Integer>();
    		for (int i = 0; i < 52; i++)
    		{
    			list.add(numeroCasuale.getNumber());
    		}
    		Collections.sort(list);
    		System.out.println(list);
    	}

  3. #3
    codice:
    import java.util.Random;
    
    public class RandomNumber {
    	
    	private int range;
    	private int[] numbers;
    	private Random generator;
    	
    	public RandomNumber(int range) {
    		this.range = range;
    		numbers = new int[range];
    		generator = new Random();
    		for (int i = 0; i < range; i++) {
    			numbers[i] = i;
    		}
    	}
    
    	public int getNextValue() {
    		int rnd = generator.nextInt(range--);
    		int tmp = numbers[range];
    		numbers[range] = numbers[rnd];
    		numbers[rnd] = tmp;
    		return numbers[range];
    	}
    
    	public static void main(String[] args) {
    		RandomNumber rn = new RandomNumber(52);
    		for (int i = 0; i < 52; i++) {
    			System.out.println(rn.getNextValue());
    		}
    	}
    
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Originariamente inviato da satifal
    codice:
    import java.util.Random;
    
    public class RandomNumber {
    	
    	private int range;
    	private int[] numbers;
    	private Random generator;
    	
    	public RandomNumber(int range) {
    		this.range = range;
    		numbers = new int[range];
    		generator = new Random();
    		for (int i = 0; i < range; i++) {
    			numbers[i] = i;
    		}
    	}
    
    	public int getNextValue() {
    		int rnd = generator.nextInt(range--);
    		int tmp = numbers[range];
    		numbers[range] = numbers[rnd];
    		numbers[rnd] = tmp;
    		return numbers[range];
    	}
    
    	public static void main(String[] args) {
    		RandomNumber rn = new RandomNumber(52);
    		for (int i = 0; i < 52; i++) {
    			System.out.println(rn.getNextValue());
    		}
    	}
    
    }
    Sicuramente meglio...

  5. #5
    Originariamente inviato da francesco.muia
    Sicuramente meglio...
    Oppsss scusa, ma non avevo visto che avevi già risposto al post.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Originariamente inviato da satifal
    Oppsss scusa, ma non avevo visto che avevi già risposto al post.
    Nulla è sicuramente meglio la tua soluzione.
    La prossima mi prendo più tempo per pensare

  7. #7
    Originariamente inviato da francesco.muia
    Nulla è sicuramente meglio la tua soluzione.
    La prossima mi prendo più tempo per pensare
    Come vedi anche io sono stato frettoloso. Non ho inserito un controllo sulla terminazione dei numeri.
    Così dovrebbe andare meglio:

    codice:
    import java.util.Random;
    
    public class RandomNumber {
    	
    	private int range;
    	private int[] numbers;
    	private Random generator;
    	
    	public RandomNumber(int range) {
    		this.range = range;
    		numbers = new int[range];
    		generator = new Random();
    		for (int i = 0; i < range; i++) {
    			numbers[i] = i;
    		}
    	}
    
    	public int getNextValue() {
    		int rnd = generator.nextInt(range--);
    		int tmp = numbers[range];
    		numbers[range] = numbers[rnd];
    		numbers[rnd] = tmp;
    		return numbers[range];
    	}
    
    	public boolean existNextValue() {
    		if (range > 0) {
    			return true;
    		}
    		return false;
    	}
    	
    	public static void main(String[] args) {
    		RandomNumber rn = new RandomNumber(52);
    		for (int i = 0; i < 52; i++) {
    			if (rn.existNextValue()) {
    				System.out.println(rn.getNextValue());
    			}
    		}
    	}
    
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.