我有一个生成随机数的函数。为什么它总是生成相同的?我尝试多次运行算法,但总是得到相同的结果。
#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;
}
答案 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