這篇文章主要講解了C++如何實現生成隨機數,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
C風格
C為隨機數提供的工具是rand、srand和RAND_MAX,定義在
srand為rand設置種子,如果不設置,相當于調用過srand(1)。rand產生偽隨機數,其范圍為0到RAND_MAX,RAND_MAX至少是32767,在MSVC和GCC中這個值都是32767。
偽隨機數看似隨機,實則是有規律可循的,對于相同的種子值,rand產生的序列完全相同,也就是說無論你給srand一個什么數字,多次運行程序的結果都將相同——除非你給srand的是不同的數字,比如時間。
如果我們只需要0到9的隨機數,可以把rand的返回值% 10;如果是42到233,可以寫rand() % 192 + 42。下面的random函數封裝了這項工作。注意只有在b - a + 1遠小于或整除RAND_MAX時隨機數的分布才比較均勻。
#include#include #include int random(int a, int b) { return rand() % (b - a + 1) + a; } int main() { srand(time(NULL)); printf("RAND_MAX = %d\n", RAND_MAX); for (int i = 0; i < 10; i++) printf("%d ", rand()); printf("\n"); int count[10] = {0}; for (int i = 0; i < 10000; i++) count[random(0, 9)]++; for (int i = 0; i < 10; i++) { printf("%d: ", i); for (int j = 0; j < count[i] / 10; j++) printf("*"); printf("\n"); } }
另外有需要云服務器可以了解下創新互聯建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。