如何在[0,1]与3个分数之间生成随机数

时间:2014-10-18 22:17:01

标签: c random montecarlo

我想生成介于0和1之间的随机数(包含0和1),但小数点后只有3个分数,如下所示:

0.000, 0.214, 0.523, 0.451, 0.102, 1.000

三位小数的目的不是用于打印。我想实现蒙特卡罗技术来获得PI的价值。所以这是if陈述。因此,我想将随机值分配给这样的变量:

double x = 0.241;

2 个答案:

答案 0 :(得分:1)

你可以生成0到1000之间的随机整数,并将其除以1000

以下c代码生成所需的随机值

#include <time.h>
#include <stdlib.h>

srand(time(NULL));
double r = (double)(rand()%1001)/1000;

答案 1 :(得分:-1)

使用随机函数计算0到1000之间的随机数,然后将其除以1000。 注意,当你使用时间函数生成随机数时,你会得到相同的数字,直到PC时钟具有相同的值 例如:

11:20:20 PM > generate random number: 10
11:20:20 PM > generate random number: 10
11:20:20 PM > generate random number: 10
11:20:21 PM > generate random number: 989

所以,每秒生成一个数字或找到一些黑客(你可以通过google轻松找到它,已经给出了很多关于stackoverflow的答案)