生成隨機數

2021-09-26 08:12:49 字數 1457 閱讀 6201

c語言中有可以產生隨機資料的函式,需要新增 stdlib. h標頭檔案與time.h標頭檔案。首先在main函式開頭加上「 srand(unsigned)time(null));",這個語句將生成隨機數的種子(不懂也沒關係,只要記住這個語句,並且知道 srand是初始化隨機種子用的即可)。然後,在需要使用隨機數的地方使用 rand()函式。下面是一段生成十個隨機數的**:

程式**:

#include#include#includeint main()

return 0;

}

執行結果:

顯然輸出結果肯定是實時變化的,上面的結果只是乙個舉例。同時還需要知道, rand()函式只能[0, rand_max]範圍內的整數( rand_max是 stdlib.h中的乙個常數,在不同系統環境中,該常數的值有所不同)。

如果想要輸出給定範圍[a,b]內的隨機數,需要使用rand()%(b-a+1)+a。顯然 rand()%(b-a+1)的範圍是[0,b-a],再加上a之後就是[a,b]。例如下面的**就可以生成[0,1]1與[3,7]範圍內的隨機數:

程式**:

#include#include#includeint main()

printf("\n");

for(int i=0;i<10;i++)

return 0;

}

執行結果:

可以發現,這種做法只對左右端點相差不超過 rand_max的區間的隨機數有效,如果需要生成更大的數(例如[a,b]大於rand_max)就不行了。想要生成大範圍的隨機數有很多方法,例如可以多次生成rand隨機數,然後用位運算拼接起來(或者直接把兩個rand隨機數相乘);也可以隨機選每乙個數字的值(0~9),然後,拼接成乙個大整數;當然,也可以採用另種思路:先用 rand()生成乙個[0, rand_ma]範圍內的隨機數,然後用這個隨機數除以rand_max,這樣就會得到乙個[0,1]範圍內的浮點數。我們只需要用這個浮點數乘以範圍長度(b-a),再加上a即可,即(int((double)rand()/rand_max*(b-a)+a),相當於這個浮點數就是[a,b]範圍內的比例位置。

程式**:

#include#include#include#includeusing namespace std; 

int main()

return 0;

}

**中記得加上標頭檔案math.h執行結果:

隨機生成隨機數

現畫乙個command命令按鈕,進行貼上。private sub command1 click show me scale 0,0 18,8 me.auto redraw true me.draw mode 2 circle 3,4 3,vb red me.auto redraw false lin...

隨機數生成

原型 void srand unsigned seed 用法 srand和rand 配合使用產生偽隨機數序列。rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。sr...

生成隨機數

1 生成num位數驗證碼 用於簡訊驗證功能 public static random rand new random public static string getcode int num result,s k return result random r new random 建立乙個隨機數生成...