快速连续的随机数
本文关键字:随机数 连续 | 更新日期: 2023-09-27 17:54:55
我需要生成一个快速连续的随机数序列,但是我的应用程序的结构意味着我不能重用相同的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();
}
}
}
然而,这显然返回相同生成数的重复,因为使用的种子是基于系统时钟的,并且循环迭代得非常快。
注意要生成的随机数很少(~100左右),所以算法差也没关系。请注意,显然,由于我不能保留对Random
对象的引用,因此我也不能使用最后生成的值作为下一次调用中的种子,因为这也是不可用的。
如何每次都得到不同的号码?
TIA
更改为:
Random rand = new Random();
for (int i = 0; i < 100; i++)
Console.WriteLine(rand.Next(int.MaxValue));
如果你真的不能创建一个持久的Random
类实例,你可以使用RandomNumberGenerator类来获得一些随机字节,然后使用这些来计算你的随机数。当然,您必须每次都创建一个新实例,并且该类比Random
要慢一些,但是它可以完成您所要求的工作。
不要每次都随机new
var random = new Random();
for (int i = 0; i < 100; i++)
Console.WriteLine(random.Next(int.MaxValue));
您可以使用静态变量:
using System;
namespace ConsoleApplication5
{
class Program
{
private static readonly Random _random = new Random();
static void Main()
{
for (int i = 0; i < 100; i++)
Console.WriteLine(_random.Next(int.MaxValue));
Console.ReadLine();
}
}
}