gpt4 book ai didi

c# - C# Random 类是如何工作的

转载 作者:行者123 更新时间:2023-11-30 16:47:46 25 4
gpt4 key购买 nike

我想了解 C# Random.next() 是如何工作的,所以我开始搜索一些东西,然后我将它标记为红色,它从时钟中获取随机种子,如下所示:DateTime.Now .毫秒。所以我想如果你连续创建很多随机对象它会吐出相同的数字,我想检查一下并创建这个代码片段。

static void Main(string[] args)
{
Random rn;
while (true)
{
rn = new Random();
Console.WriteLine(DateTime.Now.Millisecond.ToString());
Console.WriteLine(rn.Next(10));
}

}

当我运行它时,我当然得到了很多相同的数字,但我认为当 DateTime.Now.Millisecond 将要改变时,它也会改变随机数,但正如您在此输出中看到的那样,情况并非如此。

9
127
9
127
9
127
9
127
9
127
9
127
9
127
9
128
9
128
9
128
9
128
9
128
9

那么为什么 DateTime.Now.Millisecond 改变时随机数没有改变?请注意,我刚刚开始学习 C#,所以如果我犯了很多错误,我深表歉意。

最佳答案

根据source code ,无参数构造函数定义为:

  public Random() 
: this(Environment.TickCount) {
}

这意味着它不使用 DateTime.Now.Millisecond 作为种子,而是使用 Environment.TickCount 值。

所以如果你这样写你的代码:

Random rn;
while (true)
{
rn = new Random();
Console.WriteLine(Environment.TickCount);
Console.WriteLine(rn.Next(10));
}

它应该产生预期的输出。试试吧!

关于c# - C# Random 类是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39054773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com