C 生成随机数码

C 生成随机数码,c,random,C,Random,我有一个生成随机数的函数。为什么它总是生成相同的?我试过几次运行这个算法,但总是得到相同的结果 #ifndef UTIL_H #define UTIL_H #include <time.h> #include <sys/time.h> #include <stdlib.h> #define MIN 0 #define MAX 100000 void randomArray (double *array, int length) { int i

我有一个生成随机数的函数。为什么它总是生成相同的?我试过几次运行这个算法,但总是得到相同的结果

#ifndef UTIL_H
#define UTIL_H

#include <time.h>
#include <sys/time.h>
#include <stdlib.h>

#define MIN 0
#define MAX 100000


void randomArray (double *array, int length)
{
    int i ;  
    for (i = 0; i < length; i++) 
    {
        array[i] = (double) (rand () /
                   (((double) RAND_MAX + 1) / (double) (MAX - MIN + 1))) + MIN;
    }
}

int main(void) 
{
    int i;
    double test_array[9];

    randomArray(test_array,  9);    

    for(i = 0; i < 9; i++)
        printf("%f ", test_array[i]);
    printf("\n");

    return 0;
}

您需要为rand函数设置种子。在main的开头使用srandtimeNULL。

您需要为rand函数设置种子。在main的开头使用srandtimeNULL。

代码中有3个问题:

1将srand添加到您的主要功能中:

int main(void) {
    int i;
    double test_array[9];

    srand (time(NULL));        // here it is

    randomArray(test_array,  9);

    for(i = 0; i < 9; i++)
        printf("%f ", test_array[i]);
    printf("\n");

    return 0;
}
3存在未终止的ifndef,这将在编译时导致错误。 添加endif:

您的代码中有3个问题:

1将srand添加到您的主要功能中:

int main(void) {
    int i;
    double test_array[9];

    srand (time(NULL));        // here it is

    randomArray(test_array,  9);

    for(i = 0; i < 9; i++)
        printf("%f ", test_array[i]);
    printf("\n");

    return 0;
}
3存在未终止的ifndef,这将在编译时导致错误。 添加endif:

#ifndef UTIL_H
#define UTIL_H
#endif             // here it is