c Befehl srand in c#

Gast #1032416
Lesenswert?

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ä
#1035392
Lesenswert?

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();

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren