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

本文关键字:随机 4个 字节 拆分 整数 | 更新日期: 2023-09-27 18:06:39

你能把一个随机的无符号整数分成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

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

如果u仅由随机位组成,包括最高有效位或字节,那么您的代码将按原样工作。在CLR上,uint正好有4个字节,每个字节长8位。

它不起作用,所以你的随机数来源是错误的。以十六进制格式(ToString("X8"))打印100个到控制台。你可能会发现这里的0比应该的多很多。

修复随机数的来源