如何在C中生成介于-1和1之间的随机数?

时间:2014-03-01 13:50:59

标签: c random numbers negative-number

我正在尝试蒙特卡洛整合作业。这涉及在x和y轴上生成介于-1和1之间的随机数...我想我知道如何生成介于0和1之间的随机数,但不知道如何将其更改为介于-1和1之间。任何帮助将不胜感激,并提前感谢...到目前为止我的代码(有点):

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

double x,y;


int main(){

srand(time(NULL));

x=rand()/(double)(RAND_MAX);
y=rand()/(double)(RAND_MAX); /*HOW DO I MAKE THIS FROM -1 TO 1*/

return 0;
}

*我很确定一旦我知道如何生成这些负的随机数,我就可以自己解决剩下的问题所以上面的代码只是问题的一小部分(其余的我打算自己做)< / p>

3 个答案:

答案 0 :(得分:4)

double randf(double low,double high){
    return (rand()/(double)(RAND_MAX))*abs(low-high)+low;
}

randf(-1,1);

答案 1 :(得分:3)

你不能x=(rand()/(double)(RAND_MAX)) * 2 - 1吗?

答案 2 :(得分:1)

你去......

y=rand() % 3 - 1;

“%3”将使所有结果都在0和2之间。

并且-1将减小它,因此最低的数字可以是-1。

示例:

如果从mod获得数字2,则-1将使其为1。

如果从mod获得数字1,则-1将使其为0。

如果从mod获得数字0,则-1将使其为-1。 :)