Zufallszahlen ohne doppelte_oder_ Vergleiche in Arrays



  • Hallo,
    ich benötige 20positive Zufallszahlen in meinem Programm. Es werden zwar Zahlen erstellt, aber beim Überprüfen auf doppelte Zahlen versagt mein Programm.
    Gleiche Werte im Array werden nicht erkannt.
    Daher nun 2 Fragen:
    1. Gibt es in VS Express schon was vorgefertigtes für einmalige Zufallszahlen?
    2. Weshalb wird der Vergleich von Lotto[i]==Lotto[j] niemals true?

    /* Anfang Zufallszahlen*///----------------------------------------------------------------
        array< int^ >^ lotto = gcnew array< int^ >( 20 );//Initialisieren: 
        bool neueZahl;
        Random^ randObj = gcnew Random(); 
    
    	for(int i=0; i<20; i++) // 20 Zufallszahlen erzeugen
        {
     	    lotto[i]= gcnew int;
    		do							// wiederhole die Ziehung, bis die neue Zahl
            {							// nicht mit einer der vorigen identisch ist.
    			lotto[i] = randObj->Next(0,20);// Bereich der Zufallszahlen
    
                neueZahl = true; // positive Grundeinstellung
    //----------------------------------------------------
    			for (int j=0; j<i; j++)
    			{  // durchlaufe alle bisher gezogenen Zahlen
    
    			if (lotto[i]==lotto[j])
                    { // Hier wurde ein Doppelter entdeckt
    //  wird scheinbar nie durchlaufen
                        neueZahl = false;
    				}
                }
            } while (!neueZahl);
        }
    /* Ende Zufallszahlen*///------------------------------------------------------------------
    

    In der Variablenüberwachung erscheinen regelmäßig doppelte Zufallszahlen.

    wwipfel



  • lotto[i]==lotto[j]
    vergleicht nur zwei zeiger, oder?

    ich denke, du meinst nur
    array< int >^ lotto = gcnew array< int >( 20 );



  • Danke


Anmelden zum Antworten