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 に答える