一,matlab中生成隨機數主要有三個函數:rand, randn,randi函數
1,rand 生成均勻分佈的僞隨機數。分佈在(0~1)之間spa
主要語法:rand(m,n)生成m行n列的均勻分佈的僞隨機數code
rand(m,n,'double')生成指定精度的均勻分佈的僞隨機數,參數還能夠是'single'blog
rand(RandStream,m,n)利用指定的RandStream(我理解爲隨機種子)生成僞隨機數io
產生隨機整數:function
1 >> randint(1,1,[1 100]) 2 3 ans = 4 5 81 6 7 >> randint(10,1,[1 100]) 8 ??? randint(10,1,[1 100]) 9 | 10 Error: Missing variable or function. 11 12 >> randint(10,1,[1 100]) 13 14 ans = 15 16 56 17 96 18 46 19 53 20 90 21 20 22 40 23 15 24 49 25 29
2,randn 生成標準正態分佈的僞隨機數(均值爲0,方差爲1)class
主要語法:和上面同樣隨機數
3, randi 生成均勻分佈的僞隨機整數語法
主要語法:randi(iMax)在開區間(0,iMax)生成均勻分佈的僞隨機整數di
randi(iMax,m,n)在開區間(0,iMax)生成mXn型隨機矩陣
r = randi([iMin,iMax],m,n)在開區間(iMin,iMax)生成m*n型隨機矩陣
示例驗證:
均值分佈
機率分佈圖:
y=rand(1,3000000);
hist(y,2000);
二,關於隨機種子,僞隨機數的重複生成
正常狀況下每次調用相同指令例如rand生成的僞隨機數是不一樣的,
例如:
rand(1,3)
rand(1,3)
matlab的輸出爲:
ans = 0.139043482536049 0.734007633362635 0.194791464843949