Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   c# und random (https://www.delphipraxis.net/42492-c-und-random.html)

kiar 19. Mär 2005 17:49


c# und random
 
hallo,

versuche mich mal wieder an c# :mrgreen:

folgender code bringt mir für ersteZahl und zweiteZahl immer die gleiche Zahl:
Delphi-Quellcode:

    int ersteZahl;
    int zweiteZahl;
    Random rdm1 = new Random();
    Random rdm2 = new Random();
    ersteZahl = rdm1.Next(10);
    zweiteZahl = rdm2.Next(10);
    Console.WriteLine (" Erste Zahl {0:d} " , ersteZahl);
    Console.WriteLine (" Zweite Zahl {0:d} " , zweiteZahl);
    Console.WriteLine (" Ergebnis   {0:d} " , ersteZahl * zweiteZahl);
wenn ich jetzt
Delphi-Quellcode:
 zweiteZahl = rdm1.Next(10);
mache wird ersteZahl <> zweiteZahl.

kann mir da bitte mal einer erklären.

danke raik

Robert_G 19. Mär 2005 18:18

Re: c# und random
 
Dein Problem ist einfach, dass beide Random instanzen mit dem gleichen seed starten werden (der System zeit ;) ).
Wenn du dann so ein grobes Fenster wie 10 verwendest kannst du dir fast sicher sein, dass du den gleichen Wert bekommst. ;)
Du musst bedenken, dass die Systemzeit nur alle paar Millisekunden abgefragt wird. Es ist also sogar sehr wahrscheinlich, dass der Seed exakt gleich ist.
Eine Lösung wäre eine kurze Pause zwischen der Initialisierung:
Code:
         Random rdm1 = new Random();
         System.Threading.Thread.Sleep(100);
         Random rdm2 = new Random();
         ersteZahl = rdm1.Next(10);
         zweiteZahl = rdm2.Next(10);

raziel 19. Mär 2005 18:19

Re: c# und random
 
Hi,

Nicht schlecht der Hinweis beim Posten ;)

Die Antwort steht im .NET SDK:
Zitat:

Zitat von .NET Framework SDK
Initializes a new instance of the Random class, using a time-dependent default seed value.

Alternativ zu Roberts Lösung kannst Du dem Konstruktor auch einen Seed übergeben.

Gruß,
raziel

kiar 19. Mär 2005 18:39

Re: c# und random
 
danke an beide,

habe das mit Seed gelesen aber einfach ignoriert :mrgreen:

raik


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz