2014-04-04 132 views
0

我的理解是RAND_MAX取決於機器的體系結構。如果機器是32位,比rand()只能產生高達4字節的東西。如何用rand()在64位機器上生成32位隨機整數?如何在C++中生成隨機32位整數

另外,如果我想隨後用rand()生成數十億隨機整數,我是否總是需要srand()?

+4

只是把它關掉...'(uint32)rand()' – ASKASK

+6

隨着c + + 11有一個完整的標頭充滿了好吃的東西:http://en.cppreference.com/w/cpp/header/random – oakad

+1

你可能只需要調用rand兩次,並將結果合併成一個32位int,如:(rand()^(rand()<< 1))。但我不知道這是否會給出下降分佈或不... – glampert

回答

-1

由於您已經在使用rand(),所以您可能不必擔心這個時間段,因此您可以屏蔽高位。

一般而言,您應該在程序頂部執行一次類似於srand(time(NULL))的操作。否則,每次運行程序時,都會產生相同數量的十億個隨機數。