隨機數函式

2021-07-25 07:57:19 字數 1893 閱讀 1860

說明:

1、這兩個函式都在標頭檔案是stdlib.h中。

2、rand()函式和srand()函式必須配套使用。

(1) rand()函式:

原型: int rand(void)

功能: 產生從0到rand_max(0x7fff)之間的隨機數。

標頭檔案: stdlib.h

例:#include

#include

int main()

編譯執行,發現的確產生隨機數了,但是,

每次執行程式產生的隨機數都是一樣的,為什麼呢?

因為隨機數取在

c語言中採用的是固定序列,所以每次執行所取的是同乙個數

。那麼如何寫乙個程式,讓它每次執行時產生的隨機數

都不一樣呢?

(2)srand()函式:

原型: void srand(unsigned seed)

功能: 產生隨機數的起始發生資料,和rand函式配合使用

標頭檔案: stdlib.h   time.h

例:#include

#include

#include

int main(void)

這時執行程式,會發現每次產生的隨機數都不一樣。

這是因為這裡採用了時間作為種子,而時間在每時每刻都

不相同,

所以就產生了"隨機"的隨機數了

。所以,要想產生不同的隨機數,在使用rand之前需要先呼叫srand。

這樣做相當麻煩,

有沒乙個更簡單的函式呢?

(3)randomize()函式:

原型: int randomize(void)

功能: 通過time函式來得到乙個隨機數

標頭檔案: stdlib.h   time.h

該函式就相當於srand((unsign)(time(null)) 不過應注意的是randomize()的功能要通過time來實現所以在

呼叫它時標頭檔案要包含time.h。

(4)產生乙個x到y的隨機數:

由於rand產生的隨機數從0到rand_max,而rand_max是乙個很大的數,

那麼如何產生從x~y的數呢

?只要這樣寫:

k=rand()%(y-x+1)+x;

這樣可以產生任何範圍內的隨機數。

例子:#include

#include

#include

void main(void)}

3. 注意事項 

求一定範圍內的隨機數。  

如要取[0,10)之間的隨機整數,需將rand()的返回值與10求模。    randnumber = rand() % 10; 

那麼,如果取的值不是從0開始呢?你只需要記住乙個通用的公式。    

要取[a,b)之間的隨機整數(包括a,但不包括b),使用:         (rand() % (b - a)) + a  偽隨機浮點數。  

要取得0~1之間的浮點數,可以用:           rand() / (double)(rand_max) 

如果想取更大範圍的隨機浮點數,比如0~100,可以採用如下方法:         rand() /((double)(rand_max)/100)      其他情況,以此類推,這裡不作詳細說明。         當然,本文取偽隨機浮點數的方法只是用來說明函式的使用辦法,你可以採用更好的方法來實現。

隨機數 偽隨機數

隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...

隨機數函式rand srand

1.rand 功能 隨機數發生器 用法 int rand void 所在標頭檔案 stdlib.h rand 的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定的範圍裡可看成是隨機的。include include include using namespace std int...

NumPy隨機數函式

import numpy as np a np.random rand 3,4,5 每個元素為0 1之間的浮點數 sn np.random randn 3,4,5 每個元素是根據n 0,1 的方式選取出來的浮點數 b np.random randint 100,200,3,4 每個元素為100 20...