1

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

#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;
}
4

2 回答 2

6

您需要播种 rand 函数。srand(time(NULL))在你的开头使用main

于 2013-11-10T23:56:32.197 回答
1

您的代码中有3个问题:

1)添加srand到您的main()功能:

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;
}

2)添加一个stdio.h库以供使用printf()

#include <stdio.h>

3)#ifndef终止的,编译时会报错。添加#endif

#ifndef UTIL_H
#define UTIL_H
#endif             // here it is
于 2013-11-11T02:12:48.670 回答