快速连续的随机数

ena*_*ash 1 c# random

我需要快速连续生成一系列随机数,但是我的应用程序的结构意味着我不能重用同一个Random对象.

所以我需要做的是,本质上:

using System;
namespace ConsoleApplication5 {
  class Program {
    static void Main() {
      for (int i = 0; i < 100; i++)
        Console.WriteLine(new Random().Next(int.MaxValue));
      Console.ReadLine();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这显然会返回相同生成数的重复,因为使用的种子基于系统时钟并且循环正在如此快速地迭代.

注意,要生成的随机数的数量很少(约100左右),因此如果算法很差则无关紧要.请注意,显然因为我无法保持对该Random对象的引用,所以我不能将最后生成的值用作下一次调用中的种子,因为它也不可用.

我怎样才能每次获得不同的号码?

TIA

Sha*_*ard 6

改成:

Random rand = new Random();
for (int i = 0; i < 100; i++)
        Console.WriteLine(rand.Next(int.MaxValue));
Run Code Online (Sandbox Code Playgroud)


Dan*_*ite 5

new每次都不要随意.

  var random = new Random();
  for (int i = 0; i < 100; i++)
    Console.WriteLine(random.Next(int.MaxValue));
Run Code Online (Sandbox Code Playgroud)


Jim*_*hel 5

如果您确实无法创建持久化Random类实例,则可以使用RandomNumberGenerator类获取一些随机字节,然后使用它们来计算随机数.当然,你每次都必须创建一个新实例,而且这个类有点慢Random,但是它会做你要求的.