我想在C中做一個隨機數發生器 - 與使用它的標準庫進行Java相比,出奇地難得多。隨機數發生器產生相同的隨機數
這是我的代碼。現在它可以工作,但是每次我編譯和運行時,我都會得到相同的隨機數。所以這些數字是隨機的,只是他們不改變每個方法調用。這是我需要的東西!
此方法在每次調用方法時都應返回不同的數字。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void generateRandomNumber()
{
srand(time(NULL));
//i tried rand() but thats worse all the numbers are the same 33,33,33 etc
int randomNumber = random() % 100;
printf("%d\n", randomNumber);
}
int main()
{
for (int i = 0; i < 100; i++)
generateRandomNumber();
}
只有你進入循環之前播種一次,,在'main'。並且'void srand(unsigned int seed);'函數聲明不需要存在,它應該包含在'time.h'頭文件中。循環將執行得如此之快,以至於您每次都使用相同的時間值(以秒爲單位)播種它,因此您可以得到相同的隨機數。你可能會得到_超級幸運一次,秒數會在你的循環中間翻轉,但是你會得到2個值。 – yano
@ yano它應該包括,但是當我編譯與GCC它告訴我它應該。我嘗試在主要播種一次,所以你說移動srand(時間(空));主要?我試過沒有區別 – Mark
我相信這個調用是'rand()',不知道'random()'是什麼。你也不需要'int rand(void);'函數聲明。檢查這個笨蛋,它會讓你走上正軌。 – yano