相关疑难解决方法(0)

67
推荐指数
8
解决办法
4万
查看次数

在多线程应用程序中使用Random的正确方法

好.以下是我所知道的不起作用:

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类,或者更好的方法来使用它?

c# random

43
推荐指数
3
解决办法
1万
查看次数

使用C#的随机数

我正在寻找生成1到5百万之间的随机数.这个过程不一定要快(虽然它会很好),但它必须尽可能随机(我知道什么都不是随机的).我有种子的各种数据源.

我不确定.NET Random类是否足够好.

这将用于选择中奖彩票.

c# random

11
推荐指数
4
解决办法
2万
查看次数

用于C#的快速线程安全随机数发生器

我需要在多个正在运行的线程中快速生成随机浮点数.我尝试过使用System.Random,但它对我的需求来说太慢了,它在多个线程中返回相同的数字.(当我在一个线程中运行我的应用程序时,它工作正常.)另外,我需要确保生成的数字在0到100之间.

这是我现在正在尝试的内容:

number = random.NextDouble() * 100;
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

c# random parallel-processing performance generator

0
推荐指数
1
解决办法
5512
查看次数