可能重复:
How do you generate a random double uniformly distributed between 0 and 1 from C++?
我正在试图弄清楚如何在0和pi之间生成一个随机数,但是通常的方法不起作用,因为mod会进行整数除法:
double num = rand() % 2*M_PI;
我将如何做到这一点?
感谢。
答案 0 :(得分:4)
生成0到1之间的随机数,然后将结果乘以2*M_PI
。
如果在0和1之间有均匀分布,则在0和2*M_PI
之间也会有均匀分布,达到您正在使用的数字类型的可用精度限制。
要生成0到1之间的随机统一双精度数,请在评论中查看@dasblinkenlight的answer suggested。