C# Radom用法

 情况一: 多个Radom对象,指定随机种子.

 Console.WriteLine("1. 多个radom对象,指定随机种子");
            for (int i = 0; i < 10; i++)
            {
                var radom = new Random(5);
                Console.WriteLine(radom.Next(11));
            }

结果: 每次运行结果生成的随数都一样,未发生变化. 

 

 情况二: 多个Radom对象,使用默认随机种子.

Console.WriteLine("2. 多个radom对象,默认随机种子");
            for (int i = 0; i < 10; i++)
            {
                var radom = new Random();
                Console.Write(radom.Next(11)+",");
            }

结果: 每次运行结果生成的随数发生变化,同一循环体生成的随机数一样(我本机是这种情况)

 

 情况三: 一个Radom对象,指定随机种子.

Console.WriteLine("3. 一个radom对象,指定随机种子");
            var radom = new Random(5);
            for (int i = 0; i < 10; i++)
            {             
                Console.Write(radom.Next(11)+",");
            }

结果: 每次运行结果生成的随数一样,但同一循环体生成的随机数不一样.

 

 情况四: 一个Radom对象,默认随机种子.

Console.WriteLine("4. 一个radom对象,默认随机种子");
            var radom = new Random();
            for (int i = 0; i < 10; i++)
            {           
                Console.Write(radom.Next(11)+",");
            }

 结果: 每次运行结果生成的随数都不一样,同一循环体生成的随机数不一样.

 

MSDN说明:

    如果同一个种子用于单独 Random 对象,则它们将生成相同的一系列随机数字。 这可以是用于创建测试套件,用于处理随机值,或者用于重播从随机数字派生其数据的游戏。 但请注意, Random 不同版本的.NET Framework 下运行的进程中的对象可能会返回不同的随机数字的序列,即使它们使用相同的种子值实例化.

    若要生成的随机数的不同序列,您可以种子值依赖于时间,从而产生不同的系列的每个新实例 Random。 参数化 Random(Int32) 构造函数可以采用 Int32 值根据计时周期数以当前时间,而无参数 Random() 构造函数使用系统时钟生成其种子值。 不过,由于时钟具有有限的解决方法,使用无参数构造函数来创建不同 Random 中连续的对象创建生成的随机数的相同序列生成器。 下面的示例阐释了两个 Random 连续实例化的对象生成相同的一系列随机数字。 在大多数 Windows 系统, Random 在另一个 15 毫秒内创建的对象可能会遇到的相同种子值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值