大家都知道c語言中的隨機函式random,可是random函式並不是ansi c標準,所以說,random函式不能在gcc,vc等編譯器下編
譯通過。那麼怎麼實現vc語言中的隨機函式呢?
其實,除了random函式,還有乙個rand函式,這個函式也是乙個隨機函式,他可以產生從0到rand_max(32767)的隨機數。
#i nclude
#i nclude
int main()
//main
大家可以把以上的**編譯執行一下,發現他的確產生隨機數了,但是你會發現,每次執行程式產生的隨機數都是一樣的,不過你在程式裡加上for迴圈,每次產生的數不一樣,但是,如果再執行這個程式,它產生的資料卻都是相同的。
那麼如何寫乙個程式,讓它每次執行時產生的隨機數都不一樣呢? 請看下面的例子:
#i nclude
#i nclude
#i nclude
#i nclude
using namespace std;
int main(void)
這時執行程式,會發現每次產生的隨機數都不一樣。
那麼為什麼第乙個程式一樣而第二個程式一樣呢?
第二個程式用到了乙個新的函式srand
這個函式是給隨機數產生乙個隨機種子(seed),函式原型是srand( (unsigned)time( null ) );
time的值每時每刻都不同。所以種子不同,所以,產生的隨機數也不同。
所以說,要想產生不同的隨機數,在使用rand之前需要先呼叫srand
srand和rand函式都包含在stdlib.h的標頭檔案裡。
由於rand產生的隨機數是從0到rand_max的,而rand_max(32767)是乙個很大的數,那麼如何產生從x~y的數呢?
從x到y,有y-x+1個數,所以要產生從x到y的數,只需要這樣寫:
k = rand() % (y - x + 1) +x;
這樣,就可以產生你想要的任何範圍內的隨機數了
C 生成隨機數 生成任意範圍內的等概率隨機數
如果讓你用c 來生成0 n 1之間的隨機數,你會怎麼做?你可能會說,很簡單,看 srand unsigned time null rand n 仔細想一下,這個結果是隨機的嗎 當然,我們不考慮rand 函式的偽隨機性 不是的,因為rand 的上限是rand max,而一般情況下,rand max並不...
sql 指定範圍內的隨機數
cast rand 0.2 0.4 as dec 14,2 通過 rand 0.2 來確定初步範圍,通過 0.4來確定最終範圍 cast a as b 將a的替換為b的格式,b為資料型別 cast expression as data type 引數說明 expression 任何有效的sqserv...
js取範圍內的隨機數
random方法是產生隨機數,隨機產生0 1之間的數,不包括0和1 例如我們要隨機產生0 9,利用parseint 或math.floor 向下取整 例如隨機產生0 9 math.round 0 1 10 0 10 parseint 0 9 再例如隨機產生3 6 math.round 0 1 4 0...