如何生成最大值的随机uint?

时间:2015-07-16 10:18:40

标签: c# random

如何在C#中生成一个最大值的伪随机uint? (不需要最低限度。)似乎有很多问题要求完全随机,但没有上限。

澄清:此上限可能大于int.MaxValue,因此只是投射Random.Next(int)无效。

5 个答案:

答案 0 :(得分:4)

您只需在Int32.MinValueIn32.MaxValue之间生成一个数字,然后将您的范围提高一半:

var random = new Random();
int number = random.Next(Int32.MinValue, Int32.MaxValue);
uint uintNumber = (uint)(number + (uint)Int32.MaxValue);

答案 1 :(得分:2)

想法是生成随机的4字节数组,然后将您转换为Int32UInt32并不重要:

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;