C語言隨機函式的使用

2021-08-28 09:38:19 字數 1464 閱讀 5652

在程式設計中,難免會使用到隨機值函式,其原理與語法大多類似,接下來以c語言為例介紹其隨機值函式rand()用法。

原理

#include rand()函式是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說c語言的

隨機並不是真正意義上的隨機,有時候也叫[偽隨機數][wei],使用 `rand()` 生成隨機數之前需要用隨機發生器的初始化函式

`srand(unsigned seed)`(也位於 `stdlib.h` 中)進行偽隨機數序列初始化,`seed` 又叫[隨機種子][seed],通俗講就是,

如果每次提供的 `seed` 是一樣的話,最後每一輪生成的幾個隨機值也都是一樣的,因此叫偽隨機數,所以需要每次提供不同

的 `seed` 達到完全的隨機,我們通常用時間函式 `time(null)` 作為 `seed` ,因為時間值每秒都不同,這個函式需要包含

以下標頭檔案:

#include

理論太泛,下面用例子分析理解。

舉例分析

先來理解以下偽隨機數,編譯以下**:

#include #include #includeintmain

()

執行結果

8, 9, 9, 1, 7, 5, 5, 10, 1, 0,
然後無論執行多少次,結果都依然是以上隨機數,不會改變,因為每次設定的種子seed都是1

但是假如把seed換成time(null),每次就不一樣了,如下:

#include #include #includeintmain

()

結果是就變了,並且每次都不一樣:

6, 3, 4, 5, 5, 9, 8, 10, 10, 4,

6, 4, 2, 4, 3, 2, 5, 1, 2, 9,

這裡的time(null)的結果是乙個類似於1524655706的數字,並且每秒都在遞增 1,也就達成了 srand() 的 seed 不斷變化的目的,不斷生成新的隨機數。

拓展

這裡注意一下例子中函式rand()的用法,函式括號內不需要加引數,如果直接呼叫rand()的話會生成下面這樣的數:

17163, 2663, 24810, 4875, 26975, 14119, 22193, 11233, 26009, 20105, 所以我們想要生成指定範圍的隨機數的話就需要使用到**求餘**運算子 `%`,這裡有個規律:例如我們需

C語言隨機函式的使用

rand 和srand 應該是初學者最先接觸到的隨機函式了,今天博主就這兩個函式陳述一下自己的理解。這兩個函式的使用規範如下 這是乙個模擬擲色子1800次的程式 include include int main 系統在呼叫rand 之前都會自動呼叫srand 如果在srand 裡給引數seed指定了...

c語言 隨機函式

c語言 隨機函式 include rand srand 標準c庫中函式rand 可以生成0 rand max 之間的乙個隨機數,其中rand max 是stdlib.h 中定義的乙個整數,它與系統有關。rand 函式沒有輸入引數,直接通過表示式rand 來引用 例如可以用下面的語句來列印兩個隨機數 ...

隨機函式 C語言

有時對於一些程式,我是想寫乙個常用排序教程的合編 測試時需要輸入好多的測試資料,好麻煩呀,用隨機函式怎麼樣?好呀,不過得學隨機函式,好辦,baidu,做筆記如下吧 一 srand函式 srand函式是隨機數發生器的初始化函式。原型 void srand unsigned seed 用法 先提供乙個種...