keine doppelten Zufallszahlen



  • Moin moin !

    Ich habe eine Funktion die mir eine Zufallszahl generiert. So weit, so gut.

    int
    zufall (int size)
    {
      return (rand () % size);
    }
    

    da ich aber per Schleife mehrere Zzahlen zurueckgeben moechte, benutze ich eine for Schleife.
    Das sieht dann so aus:

    int main() {
    
    srand ((unsigned) time (0));
    
    for(x=0; x<=10; x++) {
       printf(zufall(10));
    }
    }
    

    So, das Problem ist nun, das oft die gleichen Zahlen generiert werden. Wie kann ich es jetzt anstellen, das das nicht passiert ? Eine Funktion basteln die ueberprueft ob die Zahl bereits generiert worden ist, aber wie ?

    Ich danke fuer jeden Tip.

    -- herby



  • so ähnlich könnte es klappen.

    bool schonda[10]={false};
    for(x=0; x<=10; x++) {
    nochmal:
        int z=zufall(10);
        if(schonda[z]) goto nochmal;
        schonda[z]=true;
        printf("%d\n",z);
    }
    

    [ Dieser Beitrag wurde am 15.11.2002 um 11:42 Uhr von volkard editiert. ]



  • Original erstellt von <herby>:
    **Eine Funktion basteln die ueberprueft ob die Zahl bereits generiert worden ist, aber wie ?
    **

    Die Zufallszahlen in ein Array speichern und dann einfach die neue Zufallszahl mit allen bisherigen vergleichen...

    achja:
    printf(zufall(10))
    kann nicht gehen!

    printf erwartet als 1. Parameter einen Formatstring:
    printf("%d",zufall(10));



  • Hi, danke fuer die schnelle Antwort !

    Das mit dem printf war ein Fluechtigkeitsfehler *g*

    Danke,

    herby



  • Das Problem der doppelten Zufallszahlen hatten wir schon ein paar mal: http://www.ts-networld.de/progc/rangerand.shtml


Anmelden zum Antworten