0:1之间的明显随机数

时间:2018-03-20 15:54:58

标签: c random

我是编程的新手,我想要一个脚本,它在0:1之间给我4个不同的随机数,所以我可以使用毕达哥拉斯并得到它的平均值。经过一些尝试,我设法创建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);
}

提前感谢。

我的问题是:

1 个答案:

答案 0 :(得分:2)

你只做了一个随机数并打印了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());