C#中random()方法的刷新率是多少
What is the refresh rate of the random() method in C#
我将在 for 循环中生成 100 个随机数。唯一的问题是,由于 random() 方法是基于计时器的,它会连续生成 3-4 次相同的数字。
我可以通过在我的循环中包含一个 threat.sleep() 方法来解决这个问题。因此我想知道 random() 方法的确切刷新率,以便我可以匹配 threat.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
它等于系统时钟的刷新率,因为它使用时间作为种子。但是为了您的工作,您应该将 Random 实例保留在循环之外。
Random rndNum = new Random();
for (int i; i <= 100; i += 1)
{
Console.WriteLine(rndNum.Next(1, 100));
}
由于它使用时间作为种子,所以它只使用它,并且即使您同时多次调用它也会生成随机数,只要您使用同一个实例。
我从未听说过或读到 Random
class 是基于计时器的。您可能听说过它是由系统时间 播种 ,但此后每次调用 Next
都会 return 一个通常与前一个不同的随机数。通常,当您看到来自 Random
的非随机数据时,这是因为您正在通过循环在每次迭代中创建一个新的随机数,就像您在共享的代码中一样。由于每个都是从系统时钟播种的,并且您正在非常快速地创建多个,因此您会看到重复的模式。在循环外创建 Random
以解决此问题。
我将在 for 循环中生成 100 个随机数。唯一的问题是,由于 random() 方法是基于计时器的,它会连续生成 3-4 次相同的数字。 我可以通过在我的循环中包含一个 threat.sleep() 方法来解决这个问题。因此我想知道 random() 方法的确切刷新率,以便我可以匹配 threat.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
它等于系统时钟的刷新率,因为它使用时间作为种子。但是为了您的工作,您应该将 Random 实例保留在循环之外。
Random rndNum = new Random();
for (int i; i <= 100; i += 1)
{
Console.WriteLine(rndNum.Next(1, 100));
}
由于它使用时间作为种子,所以它只使用它,并且即使您同时多次调用它也会生成随机数,只要您使用同一个实例。
我从未听说过或读到 Random
class 是基于计时器的。您可能听说过它是由系统时间 播种 ,但此后每次调用 Next
都会 return 一个通常与前一个不同的随机数。通常,当您看到来自 Random
的非随机数据时,这是因为您正在通过循环在每次迭代中创建一个新的随机数,就像您在共享的代码中一样。由于每个都是从系统时钟播种的,并且您正在非常快速地创建多个,因此您会看到重复的模式。在循环外创建 Random
以解决此问题。