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