生成0到1之间的随机数

时间:2014-03-08 01:13:38

标签: c++ random numbers generator

简单的问题,但对我来说很难。我想在0 and 1之间生成均匀分布的随机数,我该怎么办呢?在matlab中我使用rand,在 C ++中 rand()返回整数。

3 个答案:

答案 0 :(得分:10)

从C ++ 11开始,使用std::uniform_real_distribution

答案 1 :(得分:1)

也许您可以使用RAND_MAX常量来划分随机生成的整数

答案 2 :(得分:1)

这实际上取决于你需要多少随机数。一般来说,如果我不关心它是多么随机,我只会使用rand并除以MAX_RAND(我认为matlab的rand优于c的rand)。

然而,我所做的大部分工作都需要一个比c函数rand更好的随机数生成器,而且我不需要它具有加密安全性。在这种情况下,我使用了一个mersenne twister类(http://www.bedaux.net/mtrand/),它似乎对我有时会发现的模拟退火和蒙特卡罗模拟效果更好。

同样在这个类中,有一种方法可以获得随机的int32和一个radom double(在0和1之间)。