我的代码初始化了一个指向随机名称的指针。随机名称是使用 rand 函数随机选择的。
我注意到 rand 函数并没有完全按照我的意愿去做。在下面的代码中,它初始化了所有具有相同名称的指针!我怀疑这与 rand 函数有关,它基于时间函数的选择。如果它一次初始化所有指针,它会产生相同的随机数!?我确定时间戳产生另一个数字需要时间,对吗?我可以通过在循环中运行初始化来修复代码,但我想知道另一种修复方法,因为有时需要几秒钟才能完成循环。
以供参考:
#include <stdio.h>
#include <stdlib.h>
int random_number(int, int);
const char *random_name();
//----------------------------------------------------------------
int main(void)
{
const char * kg = NULL;
const char * ke = NULL;
const char * dg = NULL;
const char * de = NULL;
kg = random_name();
ke = random_name();
dg = random_name();
de = random_name();
printf("kg=%s\nke=%s\ndg=%s\nde=%s\n", kg, ke, dg, de);
return 0;
}
//----------------------------------------------------------------
const char *random_name(int x)
{
const char *names[7] =
{"Bob", "Billy", "Buck", "Bobby", "Bill", "Billy Bob", "Bobi"};
int roll = random_number(0,7);
return names[roll];
}
//----------------------------------------------------------------
int random_number(int min, int max)
{
int roll;
int maximum = max - min;
srand(time(NULL));
roll = (rand() % maximum) + min;
return roll;
}