我想生成一個隨機整數不同的輸出,所以我用C++蘭特(無效)和函數srand(INT)功能:C++蘭特和函數srand得到在不同的機器
int main(){
srand(1);
cout << rand() << endl;
return 0;
}
OK,很適合我的需要。每次我執行它,我都會得到相同的結果,我喜歡它!
但有一個問題。當我在我的電腦上執行它時,我得到了16807的輸出。但是,當我執行到另一臺機器上,我得到了1804289383.
我知道RAND()和函數srand(INT)有一個類似的簡單的實現:
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
那麼,爲什麼? rand()在多臺機器上有不同的實現嗎?我該怎麼辦?
我想修改另一臺機器,使得我也能從那臺機器上獲得16807。
請注意,我喜歡我的電腦上的蘭德實施。請讓我看看其他機器與我的結果相同的方式。
在此先感謝。
16807可能是MacOS上的結果。這是一個非常糟糕的隨機生成器。 [爲什麼rand()%7總是返回0?](http://stackoverflow.com/q/7866754/995714) –