我的代碼初始化一個指向隨機名稱的指針。隨機名稱是使用rand函數隨機選擇的。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;
}
在每次調用rand()之前都不要播種。在程序啓動時只需調用'srand'。 – Anthony
請考慮使用更有意義的變量名稱。 – icedwater
我在最終的程序中使用了更有意義的變量名稱。那些短暫和無意義的原因是因爲他們沒有評論,並且應該是短暫的,因爲我會使用它們一百次。但我也認爲變數應該有很好的名字。 – Samuel