【发布时间】:2014-06-03 10:32:45
【问题描述】:
您能否将一个随机无符号整数拆分为 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
【问题讨论】:
-
如果您的分布不正确,那可能是您生成整数的方式存在问题。
-
无符号整数由第三方提供,至少应该是均匀分布的。
-
似乎有什么问题?
-
@AgentFire:大约 245/255 个字节是 0 而不是 1/255
-
刚刚在您提供的示例数据上运行
s.Split(new[]{'\r'}).Select(uint.Parse).SelectMany(BitConverter.GetBytes)。它没有输出很多零。