다음과 같은 기능이 있습니다.
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
내가 그것을 부르는 방법 :
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
런타임 동안 디버거를 사용하여 루프를 수행하면 다른 값을 얻습니다 (원하는 값). 그러나 중단 점을 해당 코드 아래에 두 줄로두면 mac
배열 의 모든 멤버 가 동일한 값을 갖습니다.
왜 그런 일이 발생합니까?
Rand.Next(int, int)
종자 재사용 문제에 잠금 또는 실행하지 않고 임의의 값으로 정적에 대한 액세스를 제공하는 방법
new Random().Next((int)0xFFFF, (int)0xFFFFFF) % 256);
하는 것보다 더 나은 "무작위"숫자가 나오지 않습니다..Next(0, 256)