C 0:1之间的不同随机数
我是编程新手,我想要一个脚本,它给我4个不同的0:1之间的随机数,这样我就可以使用毕达哥拉斯,并使它的平均值。经过一些尝试,我成功地创建了0:1之间的数字,但是它们都是相同的值,我如何使它们彼此不同?对不起,我的英语不好C 0:1之间的不同随机数,c,random,C,Random,我是编程新手,我想要一个脚本,它给我4个不同的0:1之间的随机数,这样我就可以使用毕达哥拉斯,并使它的平均值。经过一些尝试,我成功地创建了0:1之间的数字,但是它们都是相同的值,我如何使它们彼此不同?对不起,我的英语不好 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int x1,x2,y1,y2,sum,pythagoras; //x1,x2,y
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int x1,x2,y1,y2,sum,pythagoras;
//x1,x2,y1,y2 must be different values
//sum = (x2-x1)^2 + (y2-y1)^2
//pythagoras = sqrt(soma)
int tempo = time(NULL);
srand(time);
double number = ((double) rand() * 2) / ( double ) RAND_MAX;
printf("x1 = %.3f", number);
printf(" x2 = %.3f", number);
printf(" y1 = %.3f", number);
printf(" y2 = %.3f", number);
}
#包括
#包括
#包括
int main(){
int-x1,x2,y1,y2,和,毕达哥拉斯;
//x1、x2、y1、y2必须是不同的值
//总和=(x2-x1)^2+(y2-y1)^2
//毕达哥拉斯=sqrt(躯体)
int tempo=时间(空);
srand(时间);
双精度数值=((双精度)兰德()*2)/(双精度)兰德_MAX;
printf(“x1=%.3f”,数字);
printf(“x2=%.3f”,数字);
printf(“y1=%.3f”,数字);
printf(“y2=%.3f”,数字);
}
提前谢谢
我的问题是:你只做了一个随机数,然后打印了4次 执行此操作时:
double number = ((double) rand() * 2) / ( double ) RAND_MAX;
这并不意味着只要您使用number
,它就会执行上述语句。这意味着它只发生一次,当你这么做的时候
如果您想要4个随机数,您需要呼叫rand
4次:
double number = ((double) rand() * 2) / ( double ) RAND_MAX;
printf("x1 = %.3f", number);
number = ((double) rand() * 2) / ( double ) RAND_MAX;
printf(" x2 = %.3f", number);
number = ((double) rand() * 2) / ( double ) RAND_MAX;
printf(" y1 = %.3f", number);
number = ((double) rand() * 2) / ( double ) RAND_MAX;
printf(" y2 = %.3f", number);
作为“公式”,您可以创建一个函数:
double rand_number()
{
return (double) rand() * 2) / ( double ) RAND_MAX;
}
然后,您可以在需要时调用此函数:
printf("x1 = %.3f", rand_number());
printf(" x2 = %.3f", rand_number());
printf(" y1 = %.3f", rand_number());
printf(" y2 = %.3f", rand_number());
在调用
rand()
的地方循环4次,思考一下你在做什么。试着向你的朋友解释一下,看看它是否真的有意义。你似乎在处理double number=((double)rand()*2)/(double)rand_MAX
类似于函数的定义,并认为printf
s是赋值。事实并非如此,甚至不接近。为什么不将rand()
s分配给变量x1,y1,x2,y2
?@antoh:主要是因为原始代码没有接近于此。