您可以将随机无符号整数拆分为4个随机无符号字节,以便它们的值(0-255)均匀分布吗?如果是这样,怎么样?
我在C#中试过这个,但似乎0比其他数字更经常使用。
byte[] bytes = BitConverter.GetBytes(u);
似乎这样做:
byte[] array = new byte[4];
fixed (byte* ptr = array)
{
*(int*)ptr = value;
}
return array;
这里有一些随机整数: http://pastebin.com/sDWBqKJK
答案 0 :(得分:3)
如果u
仅包含随机位,包括最高有效位或字节,那么您的代码将按原样运行。在CLR上,uint
恰好有4个字节,每个字节长8位。这将有效。
它不起作用,因此您的随机数源是错误的。以十六进制格式(ToString("X8")
)将其中的100个打印到控制台。你可能会发现有比现在多得多的零。
修复随机数的来源。