25 Zufallszahlen aber jede nur einmal vergeben...



  • Hallo alle,

    ich habe ein Problem .. und zwar möchte ich ein Spiel schreiben und muss dafür in ein int array 25 Zufallszahlen reinschreiben ... jede Zahl (0-24) soll aber immer nur einmal vorkommen ...

    im Moment sieht das ganze So aus:

    srand(time(NULL));
     do{
     for(int i=0;i<24;i++)
     {
      kofferarray[i]= rand()%25;
     }
     }while(kofferarray[0]==kofferarray[1]||kofferarray[0]==kofferarray[2]||
             kofferarray[0]==kofferarray[3]||kofferarray[0]==kofferarray[4]||
             kofferarray[0]==kofferarray[5]||kofferarray[0]==kofferarray[6]||
             kofferarray[0]==kofferarray[7]||kofferarray[0]==kofferarray[8]||
             kofferarray[0]==kofferarray[9]||kofferarray[0]==kofferarray[10]||
             kofferarray[0]==kofferarray[11]||kofferarray[0]==kofferarray[12]||
             kofferarray[0]==kofferarray[13]||kofferarray[0]==kofferarray[14]||
             kofferarray[0]==kofferarray[15]||kofferarray[0]==kofferarray[16]||
             kofferarray[0]==kofferarray[17]||kofferarray[0]==kofferarray[18]||
             kofferarray[0]==kofferarray[19]||kofferarray[0]==kofferarray[20]||
             kofferarray[0]==kofferarray[21]||kofferarray[0]==kofferarray[22]||
             kofferarray[0]==kofferarray[23]||kofferarray[0]==kofferarray[24]||
             kofferarray[0]==kofferarray[25]||
    
             kofferarray[1]==kofferarray[2]||kofferarray[1]==kofferarray[3]||
             kofferarray[1]==kofferarray[4]||kofferarray[1]==kofferarray[5]||
             kofferarray[1]==kofferarray[6]||kofferarray[1]==kofferarray[7]||
             kofferarray[1]==kofferarray[8]||kofferarray[1]==kofferarray[9]||
             kofferarray[1]==kofferarray[10]||kofferarray[1]==kofferarray[11]||
             kofferarray[1]==kofferarray[12]||kofferarray[1]==kofferarray[13]||
             kofferarray[1]==kofferarray[14]||kofferarray[1]==kofferarray[15]||
             kofferarray[1]==kofferarray[16]||kofferarray[1]==kofferarray[17]||
             kofferarray[1]==kofferarray[18]||kofferarray[1]==kofferarray[19]||
             kofferarray[1]==kofferarray[20]||kofferarray[1]==kofferarray[21]||
             kofferarray[1]==kofferarray[22]||kofferarray[1]==kofferarray[23]||
             kofferarray[1]==kofferarray[24]||kofferarray[1]==kofferarray[25]||
    
             kofferarray[2]==kofferarray[3]||kofferarray[2]==kofferarray[3]||
             kofferarray[2]==kofferarray[5]||kofferarray[2]==kofferarray[5]||
             kofferarray[2]==kofferarray[7]||kofferarray[2]==kofferarray[7]||
             kofferarray[2]==kofferarray[9]||kofferarray[2]==kofferarray[9]||
             kofferarray[2]==kofferarray[11]||kofferarray[2]==kofferarray[11]||
             kofferarray[2]==kofferarray[13]||kofferarray[2]==kofferarray[13]||
             kofferarray[2]==kofferarray[15]||kofferarray[2]==kofferarray[15]||
             kofferarray[2]==kofferarray[17]||kofferarray[2]==kofferarray[17]||
             kofferarray[2]==kofferarray[19]||kofferarray[2]==kofferarray[19]||
             kofferarray[2]==kofferarray[21]||kofferarray[2]==kofferarray[21]||
             kofferarray[2]==kofferarray[23]||kofferarray[2]==kofferarray[23]||
             kofferarray[2]==kofferarray[25]||
    
             kofferarray[3]==kofferarray[4]||kofferarray[3]==kofferarray[5]||
             kofferarray[3]==kofferarray[6]||kofferarray[3]==kofferarray[7]||
             kofferarray[3]==kofferarray[8]||kofferarray[3]==kofferarray[9]||
             kofferarray[3]==kofferarray[10]||kofferarray[3]==kofferarray[11]||
             kofferarray[3]==kofferarray[12]||kofferarray[3]==kofferarray[13]||
             kofferarray[3]==kofferarray[14]||kofferarray[3]==kofferarray[15]||
             kofferarray[3]==kofferarray[16]||kofferarray[3]==kofferarray[17]||
             kofferarray[3]==kofferarray[18]||kofferarray[3]==kofferarray[19]||
             kofferarray[3]==kofferarray[20]||kofferarray[3]==kofferarray[21]||
             kofferarray[3]==kofferarray[22]||kofferarray[3]==kofferarray[23]||
             kofferarray[3]==kofferarray[24]||kofferarray[3]==kofferarray[25]||
    
             kofferarray[4]==kofferarray[5]||kofferarray[4]==kofferarray[6]||
             kofferarray[4]==kofferarray[7]||kofferarray[4]==kofferarray[8]||
             kofferarray[4]==kofferarray[9]||kofferarray[4]==kofferarray[10]||
             kofferarray[4]==kofferarray[11]||kofferarray[4]==kofferarray[12]||
             kofferarray[4]==kofferarray[13]||kofferarray[4]==kofferarray[14]||
             kofferarray[4]==kofferarray[15]||kofferarray[4]==kofferarray[16]||
             kofferarray[4]==kofferarray[17]||kofferarray[4]==kofferarray[18]||
             kofferarray[4]==kofferarray[19]||kofferarray[4]==kofferarray[20]||
             kofferarray[4]==kofferarray[21]||kofferarray[4]==kofferarray[22]||
             kofferarray[4]==kofferarray[23]||kofferarray[4]==kofferarray[24]||
             kofferarray[4]==kofferarray[25]||
    
             kofferarray[5]==kofferarray[6]||kofferarray[5]==kofferarray[7]||
             kofferarray[5]==kofferarray[8]||kofferarray[5]==kofferarray[9]||
             kofferarray[5]==kofferarray[10]||kofferarray[5]==kofferarray[11]||
             kofferarray[5]==kofferarray[12]||kofferarray[5]==kofferarray[13]||
             kofferarray[5]==kofferarray[14]||kofferarray[5]==kofferarray[15]||
             kofferarray[5]==kofferarray[16]||kofferarray[5]==kofferarray[17]||
             kofferarray[5]==kofferarray[18]||kofferarray[5]==kofferarray[19]||
             kofferarray[5]==kofferarray[20]||kofferarray[5]==kofferarray[21]||
             kofferarray[5]==kofferarray[22]||kofferarray[5]==kofferarray[23]||
             kofferarray[5]==kofferarray[24]||kofferarray[5]==kofferarray[25]||
    
             kofferarray[6]==kofferarray[7]||kofferarray[6]==kofferarray[8]||
             kofferarray[6]==kofferarray[9]||kofferarray[6]==kofferarray[10]||
             kofferarray[6]==kofferarray[11]||kofferarray[6]==kofferarray[12]||
             kofferarray[6]==kofferarray[13]||kofferarray[6]==kofferarray[14]||
             kofferarray[6]==kofferarray[15]||kofferarray[6]==kofferarray[16]||
             kofferarray[6]==kofferarray[17]||kofferarray[6]==kofferarray[18]||
             kofferarray[6]==kofferarray[19]||kofferarray[6]==kofferarray[20]||
             kofferarray[6]==kofferarray[21]||kofferarray[6]==kofferarray[22]||
             kofferarray[6]==kofferarray[23]||kofferarray[6]==kofferarray[24]||
             kofferarray[6]==kofferarray[25]||
    
             kofferarray[7]==kofferarray[8]||kofferarray[7]==kofferarray[9]||
             kofferarray[7]==kofferarray[10]||kofferarray[7]==kofferarray[11]||
             kofferarray[7]==kofferarray[12]||kofferarray[7]==kofferarray[13]||
             kofferarray[7]==kofferarray[14]||kofferarray[7]==kofferarray[15]||
             kofferarray[7]==kofferarray[16]||kofferarray[7]==kofferarray[17]||
             kofferarray[7]==kofferarray[18]||kofferarray[7]==kofferarray[19]||
             kofferarray[7]==kofferarray[20]||kofferarray[7]==kofferarray[21]||
             kofferarray[7]==kofferarray[22]||kofferarray[7]==kofferarray[23]||
             kofferarray[7]==kofferarray[24]||kofferarray[7]==kofferarray[25]||
    
             kofferarray[8]==kofferarray[9]||
             kofferarray[8]==kofferarray[10]||kofferarray[8]==kofferarray[11]||
             kofferarray[8]==kofferarray[12]||kofferarray[8]==kofferarray[13]||
             kofferarray[8]==kofferarray[14]||kofferarray[8]==kofferarray[15]||
             kofferarray[8]==kofferarray[16]||kofferarray[8]==kofferarray[17]||
             kofferarray[8]==kofferarray[18]||kofferarray[8]==kofferarray[19]||
             kofferarray[8]==kofferarray[20]||kofferarray[8]==kofferarray[21]||
             kofferarray[8]==kofferarray[22]||kofferarray[8]==kofferarray[23]||
             kofferarray[8]==kofferarray[24]||kofferarray[8]==kofferarray[25]||
    
             kofferarray[9]==kofferarray[10]||kofferarray[9]==kofferarray[11]||
             kofferarray[9]==kofferarray[12]||kofferarray[9]==kofferarray[13]||
             kofferarray[9]==kofferarray[14]||kofferarray[9]==kofferarray[15]||
             kofferarray[9]==kofferarray[16]||kofferarray[9]==kofferarray[17]||
             kofferarray[9]==kofferarray[18]||kofferarray[9]==kofferarray[19]||
             kofferarray[9]==kofferarray[20]||kofferarray[9]==kofferarray[21]||
             kofferarray[9]==kofferarray[22]||kofferarray[9]==kofferarray[23]||
             kofferarray[9]==kofferarray[24]||kofferarray[9]==kofferarray[25]||
    
             kofferarray[10]==kofferarray[11]||
             kofferarray[10]==kofferarray[12]||kofferarray[10]==kofferarray[13]||
             kofferarray[10]==kofferarray[14]||kofferarray[10]==kofferarray[15]||
             kofferarray[10]==kofferarray[16]||kofferarray[10]==kofferarray[17]||
             kofferarray[10]==kofferarray[18]||kofferarray[10]==kofferarray[19]||
             kofferarray[10]==kofferarray[20]||kofferarray[10]==kofferarray[21]||
             kofferarray[10]==kofferarray[22]||kofferarray[10]==kofferarray[23]||
             kofferarray[10]==kofferarray[24]||kofferarray[10]==kofferarray[25]||
    
             kofferarray[11]==kofferarray[12]||kofferarray[11]==kofferarray[13]||
             kofferarray[11]==kofferarray[14]||kofferarray[11]==kofferarray[15]||
             kofferarray[11]==kofferarray[16]||kofferarray[11]==kofferarray[17]||
             kofferarray[11]==kofferarray[18]||kofferarray[11]==kofferarray[19]||
             kofferarray[11]==kofferarray[20]||kofferarray[11]==kofferarray[21]||
             kofferarray[11]==kofferarray[22]||kofferarray[11]==kofferarray[23]||
             kofferarray[11]==kofferarray[24]||kofferarray[11]==kofferarray[25]||
    
             kofferarray[12]==kofferarray[13]||
             kofferarray[12]==kofferarray[14]||kofferarray[12]==kofferarray[15]||
             kofferarray[12]==kofferarray[16]||kofferarray[12]==kofferarray[17]||
             kofferarray[12]==kofferarray[18]||kofferarray[12]==kofferarray[19]||
             kofferarray[12]==kofferarray[20]||kofferarray[12]==kofferarray[21]||
             kofferarray[12]==kofferarray[22]||kofferarray[12]==kofferarray[23]||
             kofferarray[12]==kofferarray[24]||kofferarray[12]==kofferarray[25]||
    
             kofferarray[13]==kofferarray[14]||kofferarray[13]==kofferarray[15]||
             kofferarray[13]==kofferarray[16]||kofferarray[13]==kofferarray[17]||
             kofferarray[13]==kofferarray[18]||kofferarray[13]==kofferarray[19]||
             kofferarray[13]==kofferarray[20]||kofferarray[13]==kofferarray[21]||
             kofferarray[13]==kofferarray[22]||kofferarray[13]==kofferarray[23]||
             kofferarray[13]==kofferarray[24]||kofferarray[13]==kofferarray[25]||
    
             kofferarray[14]==kofferarray[15]||
             kofferarray[14]==kofferarray[16]||kofferarray[14]==kofferarray[17]||
             kofferarray[14]==kofferarray[18]||kofferarray[14]==kofferarray[19]||
             kofferarray[14]==kofferarray[20]||kofferarray[14]==kofferarray[21]||
             kofferarray[14]==kofferarray[22]||kofferarray[14]==kofferarray[23]||
             kofferarray[14]==kofferarray[24]||kofferarray[14]==kofferarray[25]||
    
             kofferarray[15]==kofferarray[16]||kofferarray[15]==kofferarray[17]||
             kofferarray[15]==kofferarray[18]||kofferarray[15]==kofferarray[19]||
             kofferarray[15]==kofferarray[20]||kofferarray[15]==kofferarray[21]||
             kofferarray[15]==kofferarray[22]||kofferarray[15]==kofferarray[23]||
             kofferarray[15]==kofferarray[24]||kofferarray[15]==kofferarray[25]||
    
             kofferarray[16]==kofferarray[17]||
             kofferarray[16]==kofferarray[18]||kofferarray[16]==kofferarray[19]||
             kofferarray[16]==kofferarray[20]||kofferarray[16]==kofferarray[21]||
             kofferarray[16]==kofferarray[22]||kofferarray[16]==kofferarray[23]||
             kofferarray[16]==kofferarray[24]||kofferarray[16]==kofferarray[25]||
    
             kofferarray[17]==kofferarray[18]||kofferarray[17]==kofferarray[19]||
             kofferarray[17]==kofferarray[20]||kofferarray[17]==kofferarray[21]||
             kofferarray[17]==kofferarray[22]||kofferarray[17]==kofferarray[23]||
             kofferarray[17]==kofferarray[24]||kofferarray[17]==kofferarray[25]||
    
             kofferarray[18]==kofferarray[19]||
             kofferarray[18]==kofferarray[20]||kofferarray[18]==kofferarray[21]||
             kofferarray[18]==kofferarray[22]||kofferarray[18]==kofferarray[23]||
             kofferarray[18]==kofferarray[24]||kofferarray[18]==kofferarray[25]||
    
             kofferarray[19]==kofferarray[20]||kofferarray[19]==kofferarray[21]||
             kofferarray[19]==kofferarray[22]||kofferarray[19]==kofferarray[23]||
             kofferarray[19]==kofferarray[24]||kofferarray[19]==kofferarray[25]||
    
             kofferarray[20]==kofferarray[21]||
             kofferarray[20]==kofferarray[22]||kofferarray[20]==kofferarray[23]||
             kofferarray[20]==kofferarray[24]||kofferarray[20]==kofferarray[25]||
    
             kofferarray[21]==kofferarray[22]||kofferarray[21]==kofferarray[23]||
             kofferarray[21]==kofferarray[24]||kofferarray[21]==kofferarray[25]||
    
             kofferarray[22]==kofferarray[23]||
             kofferarray[22]==kofferarray[24]||kofferarray[22]==kofferarray[25]||
    
             kofferarray[23]==kofferarray[24]||kofferarray[23]==kofferarray[25]||
    
             kofferarray[24]==kofferarray[25]);
    

    ich hoffe, es gibt eine einfachere Variante ... und eine die keine Endlosschleife liefert 😃

    P.S Ja, ich hatte Zeit ...

    MfG Disi



  • Omfg Oo

    Wie wäre es mit zwei ineinander verschachtelten while-schleifen?

    Oder du prüfst gleich beim erzeugen das array durch, das wär wohl performanter.



  • auweia...

    for(int i=0;i<24;i++)  kofferarray[i]= i;
    random_shuffle(kofferarray, kofferarray+25);
    

    stl-Algorithmen lassen grüßen...

    Es gibt übrigens 25! Möglichkeiten, die zahlen 1-25 auf das Array zu verteilen, und (25)^25 Möglichkeiten, in jedes Element eine Zahl von 1-25 einzusetzen - du hast also eine chance von ca. P=25!2525P = \frac{25!}{25^{25}}, auf deine Art eine richtige Füllung zu kriegen. Nach der stirlingschen Formel ist 25! ca
    25!≈(25/e)2550π25! \approx (25/e)^{25}\sqrt{50\pi} und damit P=50πe25≈1,74⋅10−10P = \frac{\sqrt{50\pi}}{e^{25}} \approx 1,74\cdot 10^{-10}



  • Hier arbeitet man am besten mit Loop Kaskaden

    Die entsprechende hussy-Funktion gestaltet sich wie folgt:

    int* hussy(unsigned int s) {
    	srand(time(0)); 
    	unsigned int m=s;
    	int* nn = new int[s];
    	switch(--s) {
    		while(s+1) {
    			default:
    				s[nn]=s--;
    				continue;
    		}
    		case 0:
    			break;
    	}
    	unsigned int i(++s);
    	switch(s) {
    		for(;i<m;i++) {
    			case 0:
    			int lol=i[nn];
    			int r= rand()%m;
    			i[nn]=nn[r];r[nn]=lol;
    		}
    		default:return nn;
    	}
    	return nn;
    }
    
    int main () {
    
        unsigned int zolo = 14;
        int* daA = hussy(zolo);
        for(int i=0;i<zolo;i++) std::cout<<i[daA]<<std::endl;
        delete [] daA;
        return 0;
    }
    


  • Hmm stl-alg. kenn ich nicht .. bin noch "neuling" ^^

    Öhm muss ich noch eine Libary einbinden ? Er sagt mir:
    "Aufruf einer undefinierten Funktion 'random_shuffle'"

    was meinst du mit verschachtelten while-Schleifen Kenny ?

    Aber schonmal danke für die Tips.

    MfG Disi



  • random_shuffle befindet sich im header <algorithm>



  • So in etwa:

    #include <algorithm> // für std::random_shuffle
    
    const unsigned int MY_ARRAY_SIZE = 25;
    
    int main()
    {
        int myArray[MY_ARRAY_SIZE];
    
        for (int i = 0; i < MY_ARRAY_SIZE; ++i)
            myArray[i] = i;
        std::random_shuffle(myArray, myArray + MY_ARRAY_SIZE);
    
        return 0;
    }
    


  • Danke an alle, die geantwortet haben!

    ich habe mich für die Lösung von Don entschieden, da ich sie verstanden habe und es wesentlich weniger zu schreiben ist...

    Hat auch alles geklappt...

    MfG Disi



  • Die andere Lösung ist ja auch ein Trollbeitrag.



  • Ja, aber meine ist gut.



  • Vielen Danck C++ Obfuscator!


Anmelden zum Antworten