私のコードは、ランダムな名前へのポインターを初期化します。ランダムな名前は、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;
}