生成随机数代码

时间:2013-11-10 23:54:57

标签: 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 ;  
    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;
}

2 个答案:

答案 0 :(得分:5)

您需要为rand函数设定种子。在srand(time(NULL))

的开头使用main

答案 1 :(得分: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) unterminated #ifndef 会在编译时出错。    添加#endif

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