**:
c/c++產生隨機數用到兩個函式rand() 和 srand()
一. 不指定範圍產生隨機數
用到函式rand(),函式原型為int rand(),無引數。此時會產生乙個介於0~rand_max間的整數。rand_max的大小可以檢視,在include資料夾(linux在usr目錄、windows在安裝目錄)的stdlib.h可以看到,linux下其值為2147483647(),其值與具體系統有關。
#include#include二. 指定範圍產生隨機數,產生0到某個數的隨機數intmain()
return0;
}
沒有現成的函式,但是可以通過取餘得到
#include#include說明下:假設dis取5,#define random(x) (rand() % x) //
通過取餘取得指定範圍的隨機數
intmain()
return0;
}
注意乙個問題:
以上兩個程式每次執行產生的結果是相同的,既是個偽隨機數。rand()產生隨機數與具體的種子有關,當不特意用srand()獲取種子時,種子的預設值為1,因此需要用srand()函式產生不同的種子,srand函式原型:void srand(unsigned seed);為了產生不同的種子值,通常用時間作為引數值。例如對於一,修改程式如下:
#include#include三. 指定範圍產生隨機數#include
intmain()
return0;
}
要求:指定範圍(m,n),m、n關係不定,隨機數包括m和n
想方設法,把範圍(m,n)改變到(0,x),到最後再轉移回去。三種情況
1:m=n此時不該叫隨機數,這裡返回m2:m>n:
標記pos=n,距離差pos=m-n+1
返回 rand() % dis + pos
3:n>m:
標記pos=m,距離差=n-m+1
返回rand()%dis + pos
#include#include昇華#include
int random(int m, int
n)
else
if(m >n)
else
}int
main()
return0;
}
srand((unsigned)time(null));
(a,b) (rand()%(b-a+1))+a-1
[a,b) (rand()%(b-a))+a
(a,b] (rand()%(b-a))+a+1
[a,b] (rand()%(b-a+1))+a
ojbc 取隨機數
隨機數的使用 1 arc4random 比較精確不需要生成隨機種子 使用方法 通過arc4random 獲取0到x 1之間的整數的 如下 int value arc4random x 獲取1到x之間的整數的 如下 int value arc4random x 1 2 ccrandom 0 1 coc...
PHP 取隨機數
假設 有四個選項 a 佔 10 b佔20 c佔30 d 佔 40 原理就是現獲取隨機數,然後找區間。當然了,選項的數量可以任意。目前預設是 總和是 100 如果需要別的數,修改 隨機數的範圍即可。這個演算法,比較簡單,效率也還算高。當然因為是 rand 所以產生的是偽隨機數,不是真正意義上的隨機,能...
Oracle 取隨機數
1 從表中隨機取記錄 select from select from staff order by dbms random.random where rownum 4 表示從staff表中隨機取3條記錄 2 產生隨機數 select dbms random.random from dual 產生乙個...