C 11產生隨機數

2021-09-26 13:48:12 字數 946 閱讀 6559

#include #include #include #include using namespace std;

/*隨機數的結果一樣*/

void generate_random_1(int num){

default_random_engine e; /*未用時間初始化種子,所以每次結果一樣*/

uniform_int_distributionu(1,100); /* 產生的隨機數範圍在0~100之間*/

cout << "generate_random_1: "

cout << "generate_random_2: " 其中generate_random_1每輪產生的隨機數都是一樣的,而generate_random_2產生的隨機數則不一樣。執行結果如下:

可以看到,generate_random_1執行兩次產生的10個隨機數完全相同,因為每輪產生的隨機數相同。

而generate_random_2產生的隨機數則不完全相同,這裡之所以說不完全相同,是因為generate_random_2每次執行產生的第乙個數是一樣的,可以看到每次執行出來都是96,不知道是巧合還是其他什麼原因,這裡我沒查到原因。

其次,generate_random_2使用time(0)作為種子,而time(0)是以秒數為單位的,因此兩次generate_random_2之間不能間隔時間太短(最好大於一秒),否則會導致兩次generate_random_2執行出來的結果也一樣。故而這裡用system(「pause」)手動控制下間隔。

個人想法

考慮到使用time(0)初始化每次第乙個數是一樣的,所以可以考慮丟棄第乙個隨機數,從第二個隨機數開始使用。

在c 11裡產生隨機數

很多人在用c語言產生隨機數時多半會使用鏈結裡給出的方法。這種方法有種缺點,比如,rand 的範圍是 0,15 那麼,rand 10時,9的概率就會小於5。c 11裡面提供了一種解決方案,本文對這個解決方案做乙個簡略地介紹。這個例子可以當成乙個模板直接套用,不過更好的方法還是自己封裝一下常用的方法。於...

c 隨機數產生

我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.net framework中提供了乙個專門用來產生隨機數的類system.random。對於隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結...

C 隨機數產生

標準庫 被包含於中 提供兩個幫助生成偽隨機數的函式 函式一 int rand void 從srand seed 中指定的seed開始,返回乙個 seed,rand max 0x7fff 間的隨機整數。函式二 void srand unsigned seed 引數seed是rand 的種子,用來初始化...