Ich habe die folgende Funktion:
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Wie ich es nenne:
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Wenn ich diese Schleife mit dem Debugger während der Laufzeit durchlaufe, erhalte ich andere Werte (was ich ja auch will). Wenn ich jedoch zwei Zeilen unterhalb dieses Codes einen Haltepunkt setze, werden alle Mitglieder der mac
Array haben den gleichen Wert.
Warum ist das so?
27 Stimmen
Mit
new Random().Next((int)0xFFFF, (int)0xFFFFFF) % 256);
ergibt keine besseren "Zufallszahlen" als.Next(0, 256)
2 Stimmen
Sie finden vielleicht dieses NuGet-Paket hilfreich. Es bietet eine statische
Rand.Next(int, int)
Methode, die einen statischen Zugriff auf Zufallswerte ermöglicht, ohne Sperren oder das Problem der Wiederverwendung von Seeds zu verursachen