好.以下是我所知道的不起作用:
int Rand()
{
//will return the same number over and over again
return new Random().Next();
}
static Random rnd=new Random();
int Rand()
{
//if used like this from multiple threads, rnd will dissintegrate
//over time and always return 0
return rnd.Next();
}
Run Code Online (Sandbox Code Playgroud)
这将正常工作,但如果由多个线程使用,CPU使用率上升,我不想要,我认为没有必要:
int Rand()
{
lock(rnd)
{
return rnd.Next();
}
}
Run Code Online (Sandbox Code Playgroud)
那么,c#是否有一个线程安全的Random类,或者更好的方法来使用它?
我正在寻找生成1到5百万之间的随机数.这个过程不一定要快(虽然它会很好),但它必须尽可能随机(我知道什么都不是随机的).我有种子的各种数据源.
这将用于选择中奖彩票.
我需要在多个正在运行的线程中快速生成随机浮点数.我尝试过使用System.Random,但它对我的需求来说太慢了,它在多个线程中返回相同的数字.(当我在一个线程中运行我的应用程序时,它工作正常.)另外,我需要确保生成的数字在0到100之间.
这是我现在正在尝试的内容:
number = random.NextDouble() * 100;
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?