如何在C#中生成一个最大值的伪随机uint? (不需要最低限度。)似乎有很多问题要求完全随机,但没有上限。
澄清:此上限可能大于int.MaxValue
,因此只是投射Random.Next(int)
无效。
答案 0 :(得分:4)
您只需在Int32.MinValue
和In32.MaxValue
之间生成一个数字,然后将您的范围提高一半:
var random = new Random();
int number = random.Next(Int32.MinValue, Int32.MaxValue);
uint uintNumber = (uint)(number + (uint)Int32.MaxValue);
答案 1 :(得分:2)
想法是生成随机的4字节数组,然后将您转换为Int32
或UInt32
并不重要:
var buffer = new byte[sizeof(uint)];
new Random().NextBytes(buffer);
uint result = BitConverter.ToUInt32(buffer, 0);
result = (result % (max - min)) + min;
答案 2 :(得分:0)
您只需使用Random.Next(int maxValue)
并将int
转换为uint
:
uint value = (uint)random.Next(10000);
答案 3 :(得分:0)
这个技巧会做到这一点
static void Main(string[] args)
{
uint MaxValue = 5555;
uint value;
var rnd = new Random();
var bytes = new byte[4];
do
{
rnd.NextBytes(bytes);
value = BitConverter.ToUInt32(bytes, 0);
} while (value > MaxValue);
}
答案 4 :(得分:-1)
首先,创建随机类的新对象:
随机r = new Random();
然后,从中获取您的数字:
int myRandomNumber = r.Next(myMaximum + 1);
所以r.Next(10)将返回1-9的数字。
最后,把它投入uint: myRandomUInt =(UInt)myRandomNumber;