c語言中rand
『壹』 c語言中的rand()函數怎麼用
rand()
rand()函數用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於周期較長,因此在一定范圍內可以看成是隨機的。
rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(整數)。
在調用rand()函數之前,可以使用srand()函數設置隨機數種子,如果沒有設置隨機數種子,rand()函數在調用時,自動設計隨機數種子為1。隨機種子相同,每次產生的隨機數也會相同。
rand()函數需要的頭文件是:<stdlib.h>
rand()函數原型:int rand(void);
使用rand()函數產生1-100以內的隨機整數:int number1 = rand() % 100+1。
srand()
srand()函數需要的頭文件仍然是:<stdlib.h>
srand()函數原型:void srand (usigned int seed);
srand()用來設置rand()產生隨機數時的隨機數種子。參數seed是整數,通常可以利用time(0)或getpid(0)的返回值作為seed。
使用rand()和srand()產生1-100以內的隨機整數:
srand(time(0));
int number1 = rand() % 100+1。
『貳』 在c語言中怎樣使用rand隨機函數隨機產生一個字母
rand()生成的結果是一個整數,如果想得到字元(字母),則需要控製得到的數據在'a' - 'z'的ascii值之間的數據,給你一個生成大寫字母的
int getRandChar()
{
int ch;
srand(time(NULL));
ch=rand()%26; //生成0-25的值
ch += 'A' ; //可得到一個隨機字母
return ch ;
}
『叄』 C中,rand()是什麼意思,有什麼作用
rand()是表示產生隨機數的一種函數,多應用於循環語句當中進行判斷。
比如說n=rand();
switch(n)
{case1.......
case2......}
這些都是都可能被執行的,因為數字是隨機的。
(3)c語言中rand擴展閱讀:
注意
rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數,
當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a) ,
功能是初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,可以產生可以預見的隨機序列。
參考資料來源:rand函數-網路
『肆』 c語言中rand()函數怎麼用
rand函數功能為獲取一個偽隨機數(偽隨機數的概念下面會有介紹)。
一、函數名:
rand();
二、聲明:
int rand();
三、所在頭文件:
stdlib.h
四、功能:
返回一個偽隨機數。之所以說是偽隨機數,是因為在沒有其它操作下,每次執行同一個程序,調用rand得到的隨機數序列是固定的(不是真正的「隨機」)。
五、為了使rand的結果更「真」一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數,通過該函數可以設置一個隨機數種子,一般用當前時間的毫秒數來做參數。通過time(NULL)可以獲取到當前時間的毫秒值(該函數位於time.h)中。
六、使用rand的流程可以總結為:
1 調用srand(time(NULL))設置隨機數種子。
2 調用rand函數獲取一個或一系列隨機數。
需要注意的是,srand只需要在所有rand調用前,被調用一次即可,沒必要調用多次。
七、以下是隨機獲取10個整型值並輸出的例子,輔助理解。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inti;
srand(time(NULL));//設置隨機數種子。
for(i=0;i<10;i++)//運行10次。
printf("%d ",rand());//每次獲取一個隨機數並輸出。
return0;
}
『伍』 什麼是c語言中rand函數
函數rand()是隨機數生成器
有兩個函數用於產生隨機數:srand()和rand()。
函數一:int
rand(void);從srand
(seed)中指定的seed開始,返回一個[0,
RAND_MAX(0x7fff)]間的隨機整數。
函數二:void
srand(unsigned
seed);參數seed是rand()的種子,用來初始化rand()的起始值。
『陸』 C語言中rand()%100;表示什麼意思
rand()%100;表示獲得一個100以內的隨機數,其結歲蔽弊果在[0-99]中
rand函數產生一個0到RAND_MAX的偽隨機數,這里的RAND_MAX因不同的實現而異,但RAND_MAX至少為32767。
有些時候,用戶需要獲取一定更小范圍中的一隨機數,如得到一組100以內的隨機數,就可以採用rand()%100這種方並飢法,使得結果在100以內。
%是模運算,表示整除 右操作數 取余數
如果想得到【1,100】之間的隨機數,則需要對上面的加法進行加工,寫成:乎族
(rand()%100)+1; //先得到0-99的隨機數,然後加1,可得1-100區間內的數
『柒』 c語言rand函數的使用方法
它的返回值就是求取隨機的值,所以如果沒有對數有要求,直接這樣定:
printf("%d", rand());就能輸出一個隨機數.但如果對數有要求,如小數或改消段在一定值以內:
小數:rand()+rand()/100.0 //100.0後面橋檔的.0必須寫,100是說明求兩位小數,你可以自己加大.
一定范圍:rand()%10+0 //10是頂和底的差,0是底,就是說求10到20之間的數就是:rand()%10+10
但是調用它必須先調用srand()來生成隨機種子,如果你沒調用它,系統會自動調用.但是srand是有個參數的,種子就是根據這個參數來定的,所以這個參數決定著生成的隨機數.如果你在代碼里寫死了它核譽:srand(10);那這樣rand生成的隨機數就也被定格在了一定量,所以不要這樣用.要這樣寫:
srand(time(NULL));time的返回值是當前系統時間.因為時間不同,所取的數值也就不同.這樣隨機數就真正的隨機了.
time在中聲明
rand,srand在中聲明.
『捌』 c語言rand
rand()%90+10:隨機產生一個兩位數[10,100).
rand()是產生隨機數的函數(rand為random的縮寫),它產生一個[0,32767)之間一個隨機數.
rand()常與srand()一起使用.
srand()是seed_random的縮寫,seed意思是隨機數種子.如果程序中未使用srand()函數.C系統默認為srand(0).如果有以下語句:
for(i=0;i<5;i++)
for(j=0;j<4;j++)
a[i][j]=rand()%90+10;
則從a[0][0]到a[5][4]的值都相同.
因此要在for(i=0;i<5;i++)之前加上如下語句:
srand ( (unsigned) time (NULL) );
srand()的形參要求是unsigned型,而time()的返回值是長整型,故需強制轉換.而time(NULL)返回從1970年0時0分0秒到srand()語句執行時系統時鍾所經歷的秒數(這個數字很大達千萬,故為長整型).
如果你需要20個60到100的隨機數.則可用如下語句實現:
#inlude <stdio.h>
main()
{int a[20},i;
srand ( (unsigned) time (NULL) );
for(i=0;i<20;i++)
{a[i]=rand()%40+60;/*100-60=40*/
printf("%4d",a[i]);
}
}
其實從概律論來分析,用這兩個函數產生的隨機數並不隨機,它們並不符合正態分數.
『玖』 C語言中rand()%m是啥意思
rand()%m這個函數是隨機產生0到m-1的隨機數;比如rand()%10就是隨機產生0到9的隨機數。
拓展資料
使用C語言的rand函數,生成的是偽隨機數;
c語言之rand函數的使用
1、寫入頭文件
生成隨機數rand函數的用法:
函數rand()是真正的隨機數生成器,而srand()會設置供rand()使用的隨機數種子。如果你在第一次調用rand()之前沒有調用srand(),那麼系統會為你自動調用srand()。而使用同種子相同的數調用 srand()會導致相同的隨機數序列被生成。
srand((unsigned)time(NULL))則使用系統定時/計數器的值做為隨機種子。每個種子對應一組根據演算法預先生成的隨機數,所以,在相同的平台環境下,不同時間產生的隨機數會是不同的,相應的,若將srand(unsigned)time(NULL)改為srand(TP)(TP為任一常量),則無論何時運行、運行多少次得到的「隨機數」都會是一組固定的序列,因此srand生成的隨機數是偽隨機數。
『拾』 C中,rand()是什麼意思,有什麼作用
rand()是C語言中產生隨機數的一個函數,但是需要注意的是,產生的是偽隨機數。
rand()用法舉例:
產生1到100之間的隨機數
#include<stdio.h>
int
main(){
srand((unsigned)time(NULL));//產生隨機數種子
int
rand_num=(rand()%100)+1;//產生1到100直接的隨機數
printf("rand_num=%d\n",rand_num);
return
0;
}
代碼截圖:
(10)c語言中rand擴展閱讀:
所謂的「偽隨機數」指的並不是假的隨機數。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機數。
系統在調用rand()之前都會自動調用srand(),如果用戶在rand()之前曾調用過srand()給參數seed指定了一個值,那麼
rand()就會將seed的值作為產生偽隨機數的初始值;
而如果用戶在rand()前沒有調用過srand(),那麼系統默認將1作為偽隨機數的初始
值。如果給了一個定值,那麼每次rand()產生的隨機數序列都是一樣的。
所以為了避免上述情況的發生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來
產生種子。
如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)後面乘上某個合適的整數。
例如,srand((unsigned)time(NULL)*10)。
參考資料:網路-rand函數