Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684

    [java] numero random di numeri random tutti diversi

    Salve a tutti..
    esiste una funzione random che crea numeri random compresi tra 1 e n tutti diversi tra loro??

    Es.:
    n = 4 ---> 3214
    n = 6 ---> 534612

    Grazir mille

    Oppa

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    Math.random() crea numeri casuali tra 0 e 1
    ma i duplicati li devi controllare tu

  3. #3
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684
    ok..volevo appunto spere se non c'era qualche istruizione che ritornava giā un numero come quello che serve a me!
    Grazie
    Oppa

  4. #4
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684
    Ho pensato ad una cosa del genere ma mi ripete anche i numeri..

    codice:
    String Num = "";
    String Num2 = "";
    			
    for (int j = 0; j < NColonne; j++)
    {
      int kk = 0;
       while (kk != NColonne)
       {
         int rand = (int) (Math.random()*NColonne)+1;
         for (int a = 0; a < NColonne; a++)
         {
    	Num = numero[a].getText();
    	Num2 = Integer.toString (rand);
    				
    	if (!(Num.equals(Num2))) 
    	{
    	  kk++;
    	}
    	else if (Num.equals(Num2))
    	{
    	  kk--;
    	}
         }
       }    	
    System.out.println(Num2);	
    }
    Qualcuno sa indicarmi l'errore?? grazie mille!
    Oppa

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non c'č nessun errore. Essendo "casuali" i numeri si possono anche ripetere... specie se l'intervallo č molto piccolo.
    Spetta a te controllare che non ci siano doppioni e il codice che hai scritto non mi sembra garantire questa cosa.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684
    Infatti..il codice non da errori ma non garantisce l'univocitā dei numeri casuali..il problema č questo: cosa devo cambiare, aggiungere, togliere, ecc nel codice per fare il controllo!!
    Grazie
    Oppa

  7. #7
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    metti i numeri generati in un Vector e dopo la generazione controlla che non esista giā
    tipo
    Vector<Integer> numbers = new Vector<Integer>();
    int rand = ...
    while (numbers.contains(rand)) {
    rand = ...
    }
    numbers.addElement(rand);

  8. #8
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684
    codice:
    String Num = "";
    	String Num2 = "";
    			
    	for (int j = 0; j < NColonne; j++)
      	{
    		int kk = 0;
    		while (kk != NColonne)
       		{
         		int rand = (int) (Math.random()*NColonne)+1;
         		for (int a = 0; a < NColonne; a++)
         		{
    					Num = numero[a].getText();
    					Num2 = Integer.toString (rand);	
    					
    					if (!(Num.equals(Num2))) 
    					{
    	  					kk++;
    					}
    						else if (Num.equals(Num2))
    					{
    	  					kk--;
    					}
         		}
    				numero[j].setText (Integer.ToString(Num2));
    				System.out.println(Num2);
    		}
    	}
    Appunto io faccio cosė! solo il controllo non č corretto
    Oppa

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    :master:
    fai con il vector e vedrai che funziona

  10. #10
    Utente di HTML.it L'avatar di power83
    Registrato dal
    Oct 2002
    Messaggi
    684
    codice:
    Vector<Integer> numbers = new Vector<Integer>(); 
    
    for (int j = 0; j < NColonne; j++)
      	{
    		int rand = (int) Math.random()*(NColonne)+1;
    
    		while (numbers.contains(rand)) { 
    			rand = (int) Math.random()*(NColonne)+1;
    		}
    		System.out.println(rand);
    		
    	}
    Mi crea un solo numero random!!! uffa!!!

    Grazie per l'aiuto!!!!

    Oppa

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 © 2024 vBulletin Solutions, Inc. All rights reserved.