我想要的只是C#中一个实用的随机数生成器,所以我可以说例如
int dummyAge = MathHelpers.GetRandomNumber(20,70);
Run Code Online (Sandbox Code Playgroud)
并使其看起来是准随机的,例如生成伪数据.
关于这个主题和网络上的大多数堆栈溢出问题进入了关于真正随机性的哲学讨论,这不是我现在感兴趣的,例如我很久以前用PHP做了一个使用毫秒/睡眠,这很好虚拟数据,我只是想在 C#中快速做到这一点.
有没有人有一个快速的半合适的C#随机数生成器基于一些时间种子等,或者,我怎么能更改以下代码,以便它始终不会连续生成相同的5个数字?
using System;
namespace TestRandom23874
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("the random number is: {0}", MathHelpers.GetRandomNumber(1, 10));
Console.WriteLine("the random number is: {0}", MathHelpers.GetRandomNumber(1, 10));
Console.WriteLine("the random number is: {0}", MathHelpers.GetRandomNumber(1, 10));
Console.WriteLine("the random number is: {0}", MathHelpers.GetRandomNumber(1, 10));
Console.WriteLine("the random number is: {0}", MathHelpers.GetRandomNumber(1, 10));
Console.ReadLine();
}
}
public class MathHelpers
{
public static int GetRandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
}
}
Run Code Online (Sandbox Code Playgroud)
BFr*_*ree 13
public class MathHelpers
{
private static Random random = new Random();
public static int GetRandomNumber(int min, int max)
{
return random.Next(min, max);
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您不是每次都创建一个新的Random对象,而是重复使用相同的对象.当您足够快地重新创建一个新的时,它们将产生相同的结果.但是,如果您重复使用现有的,则会获得随机性.