c Befehl srand in c#

Gast #1032416
Hallo Leute,

ich versuche z.Zt. ein altes C-Konsolenprogramm in C# mit graphischer 
Obefläche neu zu schreiben.

Mein Problem sind die Befehle srand, rand und RAND_MAX dabei in C# 
umzusetzen. Das .Net 2.0 Framework bietet hierfür Random an.

Irgendwie generiert C# mir immer andere Werte und das alte C-Programm 
immer die gleichen! Ich weiß leider nicht mehr weiter, vielleicht kann 
mir jemand helfen.


C-Code:
1
double d[10] = {0};
2

3
for (int i = 0; i <= 9; i++)
4
{
5
    srand(i);
6

7
    d[i] = (double)rand() / (double)RAND_MAX;
8
}


C#-Code:
1
int RAND_MAX = 32767; //RAND_MAX gibt es nicht in C#
2

3
double[] d = new double[10];
4

5
Random rnd = new Random();
6

7
for (int i = 0; i <= 9; i++)
8
{
9
    d[i]= (double)rnd.Next(i, RAND_MAX) / (double)(RAND_MAX);
10
}


MfG Dimä
Gast #1032530
Den Seed kann man im Konstruktor angeben.

(Auch wenn man normalerweise eigentlich gerade nicht immer "dieselben 
Zufallswerte" haben möchte. Sehr seltsam ;D)
#1035392
Ja C liefert immer die selben Zahlen, ist halt nur pseudo-zufällig. Kann 
man sich so vorstellen, dass C immer den gleichen Kartenstapel hat und 
auch immer die gleichen Karten abhebt. Darum sollte man vorher den 
Kartenstapel neu mischen, dafür ist die Funktion srand.
1
srand( time(NULL) );
Damit mischt du den Stapel.
Damit holst du dir die Zahl:
1
zahl=rand();
Gast #1063061
Hallo,
eine kleine Ergaenzung zum C-Code - die srand(time(0)); Anweisung muss 
natuerlich ausserhalb deiner Schleife stehen, da du sonst immer 
denselben Wert erhaeltst.
Gruss Winfried

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.