我正在尝试蒙特卡洛整合作业。这涉及在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>
答案 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。 :)