Mam następującą funkcję:
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Jak to nazywam:
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Jeśli uruchomię tę pętlę za pomocą debugera podczas uruchamiania, otrzymam różne wartości (to jest to, czego chcę). Jeśli jednak umieszczę punkt przerwania dwie linie poniżej tego kodu, wszyscy członkowie mac
tablicy mają równą wartość.
Dlaczego tak się dzieje?
Rand.Next(int, int)
metodę statyczną , która zapewnia statyczny dostęp do losowych wartości bez blokowania lub problemów z ponownym użyciem materiału siewnego
new Random().Next((int)0xFFFF, (int)0xFFFFFF) % 256);
nie daje lepszych „losowych” liczb niż.Next(0, 256)