CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Senso41 con ben 24 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: peppe130 con ben 128 Thanks ricevuti negli ultimi sette giorni
Utente del mese: Pierdebeer con ben 705 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 4 su 4
Discussione:

Creare numeri Random sempre diversi

  1. #1
    Baby Droid
    Registrato dal
    Jan 2013
    Messaggi
    18
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Creare numeri Random sempre diversi

    Ciao ragazzi ho questo problema devo creare TOT numeri random diversi tra loro..ho provato cosi ma mi restituisce anche numeri uguali..non so come fare!

    codice:
    //metodi per le combianazioe
        public String[] createCombination(){
        	//creo la combinazione e la inserisco nell array combinazione
        	
        	String[] colors = {"rosso","bianco","azzurro","arancione","blu","verde","viola","grigio","nero","giallo"};
        	
        	//creo la combinazione casuale
        	int cr = 130;
        	for (int c = 0; c<Integer.parseInt(spazi); c++){
        		
        		int r = (int)(Math.random()*Integer.parseInt(colori));
        		while (r == cr){
        			 r = (int)(Math.random()*Integer.parseInt(colori));
        		}
        		combinazione[c] = colors[r];
        		cr = r;
        		
        	}
        	return combinazione;
        }

    Ho notato che i colori si ripetono solo gli ultimi 2 o 3 quindi per i primi funziona poi non funziona più..
    Ultima modifica di dvdciri; 15-02-13 a 16:03

  2.  
  3. #2
    Androidiano L'avatar di iClaude76
    Registrato dal
    Oct 2012
    Località
    Trento
    Messaggi
    183
    Smartphone
    Galaxy S3, Nexus 7, G. Tab 2 7
    Thanks
    1
    Thanked 23 Times in 21 Posts
    Predefinito

    Il codice non è molto chiaro perché ci sono variabili che vengono da fuori...
    A occhio sembra che tu voglia mescolare casualmente l'array colors mettendo il risultato nell'array combinazione, giusto?
    Se è così l'errore sta nel fatto che tu confronti ogni numero casuale generato con quello immediatamente precedente (memorizzato in cr), mentre in realtà dovresti controllare tutta la sequenza precedente per evitare doppioni.

    Per risolvere ci possono essere tanti modi, ma secondo me il modo più semplice è utilizzare un ArrayList di String e poi usare il metodo shuffle della classe Collections (package java.util). Tanto poi ci sono metodi per passare da array ad ArrayList e viceversa molto facilmente.

  4. #3
    Baby Droid
    Registrato dal
    Jan 2013
    Messaggi
    18
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Ottimo grazie mille 5 secondi prima che mi rispondessi ho risolto con un arrayList però ho fatto un casino assurdo ma son riuscito..NON SAPEVO SI POTESSE MESCOLARE ANCH LE STRINGE =(
    va bhe ho fatto cosi:

    codice:
    //creo la combinazione e la inserisco nell array combinazione
        	
        	String[] colors = {"rosso","bianco","azzurro","arancione","blu","verde","viola","grigio","nero","giallo"};
        	
        	//creo una lista di tutti i numero ordinati,
        	ArrayList<Integer> array = new ArrayList<Integer>();
        	for (int i = 0; i < Integer.parseInt(colori); i++) {
        		    array.add(i);
        	}
        	Collections.shuffle(array); // mescolo la lista
        	
        	//prendo dalla lista tot numeri a caso
        	for (int c = 0; c<Integer.parseInt(spazi); c++){   		
        		combinazione[c] = colors[array.get(c)];
        	}
    Perchè l problema era che io da es questi numeri 012345 devo prelevare 4 numeri diversi..
    Quindi come ho fatto io creo la lsta con 012345 poi li shuffle 312504 e prendo i primi 4 numeri 3 1 2 5..anche se non è proprio bello però funziona =)

  5. #4
    Baby Droid
    Registrato dal
    Jan 2013
    Messaggi
    18
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Puoi darmi una mano anche con questo problema?

    Io per settare da java il background drawable a una texBox faccio cosi:

    codice:
    Drawable d = P[0].getBackground(); //qui prendo il background di un altro elemento
    textBox.setBackgroundDrawable(d); //qui lo setto alla mia textBox
    Ma se volessi prende il nome di quel Drawable (che in questo caso si chiama "rosso", quindi in xml @drawable/rosso) CEOM POSSO FARE?

    GRAZIE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •