c# - 生成随机单位

标签 c# random uint

我需要生成范围为 byteushortsbyteshortintuint。我能够使用 C# 中的随机方法为所有这些类型生成(例如 values.Add((int)(random.Next(int.MinValue + 3, int.MaxValue - 2)));) uint 除外,因为 Random.Next 最多只接受 int 值。

有没有简单的方法生成随机uint

最佳答案

最简单的方法可能是使用两次调用:一次用于 30 位,一次用于最后两个。此答案的早期版本假设 Random.Next() 具有 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 .

关于c# - 生成随机单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17080112/

相关文章:

尽管使用了随机种子,但随机数仍然保持不变

Python 位串 uint 被视为 long

C# 目录服务双重添加到列表

c# - 在设计器中调整窗体大小时停止锚定控件移动

c# - Linq 获取不同的

swift - 如何快速将 UInt 转换为 Int?

c# - 如何强制 PHP 将数字视为 uint

c# - Unity 3,RegisterTypes方法在哪里?

c# - ASPNET核心2.0 : Is there a way to access IOptions without constructor pattern?

random - 初始化榆树应用程序的正确方法是什么