zufällig Elemente aus der Liste löschen



  • Hi Leute,

    Ich brauche Ihre Hilfe.

    Ich habe eine Liste mit 16 Elementen.

    {0,1,3,2,6,5,4,7,8,13,11,10,9,15, 12, 14)

    Ich muss die zufällig mehrere Elemnten aus der Liste löschen.

    Ich habe eine Varibale "number", die die Anzhal der zu löschenden Elementen zeigt.
    z.B

    number = 6;
    

    -> Es müssen zufällig 6 Elemnten aus der Liste gelöscht werden.

    Das Problem ist, wenn Ich so eine "for"-Schleife mache:

    srand( (unsigned) time(NULL) ) ;
    
    	for ( i =0; i < number; i++)
    {
    
                 val = (rand()%16);
                 printf ("%u\n", val);
    	     delete(val);
    
    }
    

    Gibt die Datei manchmal gleiche Werte raus;

    Z. B.:

    number =4;
    i =0; val = 5; lösche(5);
    i =1; val = 4; lösche(4);
    i =2; val = 11; lösche(11);
    i =3; val = 5; lösche(5); --> Problem (Wiederholung)
    

    Was kann Ich tun, damit es immer unterschiedliche Zahlen ausgegeben werden.

    Im Voraus Vielen Dank

    Lena



  • Noch mal würfeln, zB:

    char war_schon_dran[16] = { 0 };
    
       for (i=0; i<number;++i) {
           while (war_schon_dran[val = rand()%16]) ;
    
           war_schon_dran[val] = 1;
    
           /* ... */
       }
    

    Wenn number typischerweise nahe an der Feldgröße liegt, ist das zwar nicht mehr so günstig, aber hier reicht's allemal.


Anmelden zum Antworten