我需要生成范围为的随机数byte
, ushort
, sbyte
, short
, int
, and uint
。我可以使用 C# 中的 Random 方法生成所有这些类型(例如values.Add((int)(random.Next(int.MinValue + 3, int.MaxValue - 2)));
) 除了 uint 因为Random.Next
最多只接受 int 值。
有没有一种简单的方法来生成随机数uint
?
最简单的方法可能是使用两次调用:一次调用 30 位,一次调用最后两位。这个答案的早期版本假设Random.Next()
had an 包括的的上限int.MaxValue
,但事实证明它是排他的 - 所以我们只能得到 30 个统一位。
uint thirtyBits = (uint) random.Next(1 << 30);
uint twoBits = (uint) random.Next(1 << 2);
uint fullRange = (thirtyBits << 2) | twoBits;
(当然,您可以将其取为两个 16 位值,作为替代方案......或介于两者之间的各种选项。)
或者,您可以使用NextBytes
填充一个 4 字节数组,然后使用BitConverter.ToUInt32 http://msdn.microsoft.com/en-us/library/system.bitconverter.touint32.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)