You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中为Random构造函数传入20参数会对代码运行产生什么影响?

C# Random 构造函数参数作用说明

核心原理

C#的Random类是伪随机数生成器,它并不产生真正意义上的随机数,而是基于固定算法、以一个初始数值(称为「种子」)为起点计算得到一整套伪随机序列。只要种子相同,生成的随机数序列就会完全一致。

两种构造函数的区别

  • 原代码中的Random Number = new Random();:无参构造默认会以系统当前的时间戳作为种子。因为每次运行程序的时间都不一样,所以种子每次都不同,最终生成的骰子点数也会随机变化,符合投掷骰子的预期。
  • 修改后的Random Number = new Random(20);:这里传入的20就是手动指定的种子值。只要种子固定为20,无论你运行多少次程序、在哪台设备上运行,第一次调用Next(1,13)返回的数值都是固定的,后续调用生成的数值序列也会完全相同。

补充优化建议

你当前的代码写法存在隐含问题:如果在短时间内多次调用RollDice方法,每次都新建Random实例的话,系统时间戳可能还没来得及更新,会导致多个实例拿到相同的种子,返回相同的点数。更规范的写法是把Random实例提升为类的静态成员,全局复用同一个实例,示例如下:

// 优化后的代码
using System;
namespace ConsoleApp1
{
    class Program
    {
        // 全局复用同一个Random实例
        private static Random _number = new Random();
        
        // 生成随机数的子程序
        static int RollDice()
        {
            return _number.Next(1,13);
        }

        // 主程序
        static void Main(string[] args)
        {
            int Dice = RollDice();
            Console.WriteLine("Rolled a {0}", Dice);
        }
    }
}

内容的提问来源于stack exchange,提问作者EdH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:45:00