說明:
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...