C 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

我是编程新手,我想要一个脚本,它给我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,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:主要是因为原始代码没有接近于此。