将随机整数拆分为4个随机字节

时间:2014-06-03 10:32:45

标签: c# .net random

您可以将随机无符号整数拆分为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

1 个答案:

答案 0 :(得分:3)

如果u仅包含随机位,包括最高有效位或字节,那么您的代码将按原样运行。在CLR上,uint恰好有4个字节,每个字节长8位。这将有效。

它不起作用,因此您的随机数源是错误的。以十六进制格式(ToString("X8"))将其中的100个打印到控制台。你可能会发现有比现在多得多的零。

修复随机数的来源。