C#中random()方法的刷新率是多少

本文关键字:刷新率 多少 方法 random | 更新日期: 2023-09-27 18:27:35

我将在for循环中生成100个随机数。唯一的问题是,由于random()方法是基于定时器的,它将连续3-4次生成相同的数字。我可以通过在循环中包含一个威胁.sleep()方法来解决这个问题。因此,我想知道random()方法的确切刷新率,这样我就可以匹配威胁.sleep()方法,而不会被延迟超过必要的时间。

这是我的代码:

for (int i; i <= 100; i += 1)
{        
    Random rndNum = new Random();
    Console.WriteLine(rndNum.Next(1, 100));
    Thread.Sleep(X); //I want to know the best value of X (as less delay as possible) 
}

谢谢大家

/HamMan4Ever

C#中random()方法的刷新率是多少

我从未听说过或读过Random类是基于定时器的。您可能已经听说它在系统时间前被播种,但在此之后,对Next的每次调用都将返回一个随机数,该随机数通常与前一个不同。通常,当您看到来自Random的非随机数据时,这是因为您正在通过循环在每次迭代中创建一个新的随机数据,就像您在共享的代码中一样。由于每一个都是从系统时钟中播种的,并且你很快就创建了几个,所以你会看到重复的模式。在循环外创建您的Random以消除此问题。

它等于系统时钟的刷新率,因为它使用时间作为种子。但对于您的工作,您应该将Random实例保持在循环之外。

Random rndNum = new Random();
for (int i; i <= 100; i += 1)
{        
    Console.WriteLine(rndNum.Next(1, 100));
}

由于它使用时间作为种子,因此它只使用一个时间,并且只要使用同一实例,即使您同时调用它多次,它也会生成随机数。