Random gibt immer die gleichen Zahlen



  • Random r = new Random();
    
    Console.WriteLine(r.Next(255)+"  "+r.Next(255)+"   "+r.Next(255));
    

    Wieso gibt dieser Code dreimal 240 aus....egal wie oft ich das Programm starte



  • Zufall? Es ist theoretisch nicht ausgeschlossen, dass der Aufruf von Random bei dir immer nur 240 ausgibt.

    Bei mir schauts so aus, das Zeit-Raum Kontinuum scheint also soweit noch OK zu sein (für den Moment).:

    [jojo] [~] mcs test.cs
    
    [jojo] [~] mono test.exe
    140  2   40
    [jojo] [~] mono test.exe
    92  196   96
    [jojo] [~] mono test.exe
    73  204   237
    [jojo] [~] mono test.exe
    24  92   129
    [jojo] [~] mono test.exe
    114  83   74
    


  • Das Random immer die gleiche Zahl ausgibt ist normal, zumindest so wie Du random initialisiert hast!
    Die genaue Deklaration weiß ich grad nicht aber Du mußt random noch mit der internen Zeit deines Rechners "verbinden" damit wirklich eine Zufallszahl erzeugt wird.
    So, wir Du es deklariert hast, wird es immer 240 als "Zufallszahl" ausspucken. Das ist zu Debugger-Zwecken. Sc hau bitte in der Hilfe nach wie Du random mir der Rechnerzeit verknüpfst.
    mfg
    Maretin



  • hö ?
    Laut Doku wird beim Konstruktor ohne Parameter "Der Standardstartwert wird aus der Systemzeit abgeleitet." (Wer das SDK drauf hat: ms-help://MS.NETFramework.v20.de/cpref2/html/C_System_Random_ctor.htm)

    Dieses Verhalten kann ich bei mir auch im Debugger feststellen...

    Ferner steht drin:
    "Die erzeugten Zahlen sind gleichverteilt, d. h. die Wahrscheinlichkeit, zurückgegeben zu werden, ist für alle Zahlen gleich."



  • byte[] randomNumbers = new byte[10];
    new RNGCryptoServiceProvider().GetNonZeroBytes(randomNumbers);
    for (int i = 0; i < 10; i++)
        Console.WriteLine(randomNumbers[i]);
    

Anmelden zum Antworten