次の機能があります。
//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);
ランタイム中にそのループをデバッガーでステップすると、異なる値が得られます(これが私が望んでいることです)。ただし、そのコードの2行下にブレークポイントを配置すると、mac
配列のすべてのメンバーの値が等しくなります。
なぜそれが起こるのですか?
Rand.Next(int, int)
、シードの再利用問題をロックしたり実行したりせずにランダム値への静的アクセスを提供する静的メソッドを提供します
new Random().Next((int)0xFFFF, (int)0xFFFFFF) % 256);
しても、「乱数」より優れた乱数は生成されません.Next(0, 256)