你如何生成一个随机双重均匀分布在0和1之间从C ++? [英] How do you generate a random double uniformly distributed between 0 and 1 from C++?
问题描述
如何生成一个随机的双重均匀分布在0和1之间从C ++?
当然,我可以想到一些答案,但我想知道标准做法是:
- 良好的标准合规性
- 良好的随机性
- 速度快
(速度比我的应用程序的随机性更重要)。
$非常感谢!PS:在这种情况下,我的目标平台是Linux和Windows。
像这样的老学校解决方案:
double X =((double)rand()/(double)RAND_MAX);
应符合所有标准(便携式,标准和快速)。
显然,生成的随机数必须被播种标准过程是这样的:
srand (空值));
How do you generate a random double uniformly distributed between 0 and 1 from C++?
Of course I can think of some answers, but I'd like to know what the standard practice is, to have:
- Good standards compliance
- Good randomness
- Good speed
(speed is more important than randomness for my application).
Thanks a lot!
PS: In case that matters, my target platforms are Linux and Windows.
An old school solution like:
double X=((double)rand()/(double)RAND_MAX);
Should meet all your criteria (portable, standard and fast). obviously the random number generated has to be seeded the standard procedure is something like:
srand((unsigned)time(NULL));
这篇关于你如何生成一个随机双重均匀分布在0和1之间从C ++?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!