用c語(yǔ)言產(chǎn)生隨機(jī)數(shù)rand() 在C語(yǔ)言中,rand()函數(shù)可以用來(lái)產(chǎn)生隨機(jī)數(shù),但是這不是真真意義上的隨機(jī)數(shù),是一個(gè)偽隨機(jī)數(shù),是根據(jù)一個(gè)數(shù),我們可以稱(chēng)它為種子,為基準(zhǔn)以某個(gè)遞推公式推算出來(lái)的一系數(shù),當(dāng)這系列數(shù)很大的
在excel中rand函數(shù)的使用方法,步驟加圖
方法
選中單元格,往里輸入“=rand()”
Rnd(number) 返回一個(gè)Single類(lèi)型的隨機(jī)數(shù),小于 1 但大于或等于 0 的值 如果 number 的值 小于 0 每次都得到相同的隨機(jī)數(shù)。 大于 0 或省略 產(chǎn)生下一個(gè)隨機(jī)數(shù)。 等于 0 返回最近一次生成的隨機(jī)數(shù)。 使用之前最好使用Randomize 例如產(chǎn)生N到M的隨機(jī)
輸入后按回車(chē)
這個(gè)我用過(guò),我知道: rand()是一個(gè)可以生成隨機(jī)數(shù)的函數(shù)隨機(jī)數(shù),函數(shù)返回的隨機(jī)數(shù)在0-RAND_MAX(32767)之間; rand()%100結(jié)果是隨機(jī)數(shù)除以100后所得的余數(shù),即限定隨機(jī)的范圍是在0~99之間; 使用rand()函數(shù)需添加頭文件:#include 你的二維數(shù)組可
向右向下復(fù)制填充公式,就會(huì)得到一系列大于等于0小于1的隨機(jī)數(shù)
要先設(shè)置種子,編譯器里如果不設(shè)置種子,種子會(huì)默認(rèn)為0,那么每次運(yùn)行的隨即數(shù)都一樣的。用time函數(shù)來(lái)改變種子,就可以很好的體現(xiàn)出“真正的隨即”了。 完整代碼: 例子: #include #include #include main(){ int i,a[10]; srand(time(0)); for(i
若需要0-5之間的隨機(jī)數(shù),就要把rand函數(shù)返回?cái)?shù)值擴(kuò)大5倍即可。
rand(產(chǎn)生隨機(jī)數(shù)) 表頭文件: #include 定義函數(shù) :int rand(void) 函數(shù)說(shuō)明 : 因?yàn)閞and的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過(guò)是因?yàn)槠渲芷谔貏e長(zhǎng),所以有一定的范圍里可看成是隨機(jī)的,rand()會(huì)返回一隨機(jī)數(shù)值,范圍在0至RAND
如圖,錄入公式=rand()*5
rand函數(shù) 函數(shù)頭文件:stdlib.h 函數(shù)定義:int rand(void) 函數(shù)功能:產(chǎn)生一個(gè)隨機(jī)數(shù) 函數(shù)說(shuō)明: rand函數(shù)產(chǎn)生的隨機(jī)數(shù)嚴(yán)格意義講不是真正的隨機(jī)數(shù),它里面采用了線性同余法計(jì)算出隨機(jī)數(shù),所謂的線性同語(yǔ)法簡(jiǎn)單來(lái)說(shuō)就是使用了一個(gè)公式。 該方法
輸入后按回車(chē)
這個(gè)我用過(guò),我知道: rand()是一個(gè)可以生成隨機(jī)數(shù)的函數(shù)隨機(jī)數(shù),函數(shù)返回的隨機(jī)數(shù)在0-RAND_MAX(32767)之間; rand()%100結(jié)果是隨機(jī)數(shù)除以100后所得的余數(shù),即限定隨機(jī)的范圍是在0~99之間; 使用rand()函數(shù)需添加頭文件:#include 你的二維數(shù)組可
并把函數(shù)向下向右復(fù)制填充,就得到0-5之間的隨機(jī)實(shí)數(shù)了。
方法/步驟 如何更改RAND函數(shù)輸出值的范圍。 通常情況下,RAND函數(shù)輸出結(jié)果在0~1之間,如果我們想輸入10~100之間的數(shù)據(jù),該怎么辦?其實(shí)我們只需要給RAND函數(shù)擴(kuò)大1000倍即可。如圖: 有時(shí),我們更希望RAND輸出的結(jié)果只保留幾位數(shù),對(duì)此,我們可以
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
c語(yǔ)言rand函數(shù)的使用
你好?。?/p>
srand((int)time(NULL));// 移到循環(huán)的外面
增加了每次出拳的顯示,便于查看
增加了局?jǐn)?shù)的顯示#include<stdlib.h>//為了使用srand、rand函數(shù)必須使用該頭文件
#include<time.h>//要使用time()必須使用該頭文件
#include<stdio.h>
int main()
{
char in;
//出錯(cuò),產(chǎn)生的隨機(jī)數(shù)永遠(yuǎn)一樣。
srand((int)time(NULL));// 移到循環(huán)的外面
int a=1;
do{
int user; //定義玩家和電腦出拳
int uwin,ulos,allwin;//定義玩家的勝利參數(shù),失敗參數(shù),平局參數(shù)
int cwin,clos,loop; //定義電腦的勝利參數(shù)和失敗參數(shù),不需要定義平局參數(shù),可以直接取用allwin
int computer=0;
uwin=0;
ulos=0;
allwin=0;
cwin=0;
clos=0;
computer = rand()%3+1; //隨機(jī)產(chǎn)生1-3任意一個(gè)整數(shù),rand()%3是隨機(jī)產(chǎn)生0-2之間的整數(shù)(包含0但不包含3)
printf("n【第 %d 局】n 請(qǐng)出拳:",a);
a++;
scanf("%d",&user);
printf("這一局,您出的是【%d】,電腦出的是【%d】!n",user,computer);
switch(user)
{
case 1:
if(computer==1)
{
printf("這一局,您出的是【石頭】,電腦出的是【石頭】,好巧哦,是平局耶!n");
allwin+=1;
}
}
}while(1);
}
rand()函數(shù)如何使用
srand函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù),原型:
void srand(unsigned seed);
它需要提供一個(gè)種子,如:
srand(1);
直接使用1來(lái)初始化種子。
不過(guò)常常使用系統(tǒng)時(shí)間來(lái)初始化,即使用
time函數(shù)來(lái)獲得系統(tǒng)時(shí)間,它的返回值為從 00:00:00 GMT, January 1, 1970
到現(xiàn)在所持續(xù)的秒數(shù),然后將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型在傳給srand函數(shù),即:
srand((unsigned) time(&t));
還有一個(gè)經(jīng)常用法,不需要定義time_t型t變量,即:
srand((unsigned) time(NULL));
直接傳入一個(gè)空指針,因?yàn)槟愕某绦蛑型⒉恍枰?jīng)過(guò)參數(shù)獲得的t數(shù)據(jù)。
srand((int)getpid());
使用程序的ID(getpid())來(lái)作為初始化種子,在同一個(gè)程序中這個(gè)種子是固定的
隨機(jī)輸出十個(gè)0-100之間的整數(shù)
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
{
k=rand()%100;
printf( " k=%d\n", k );
}
}
參考資料:http://baike.baidu.com/view/1458234.html?wtp=tt
C++ rand函數(shù)怎么用,頭文件應(yīng)包括什么
使用rand函數(shù)時(shí)頭文件應(yīng)該包括stdlib.h,rand()函數(shù)用來(lái)產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實(shí)現(xiàn)是用線性同余法實(shí)現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長(zhǎng),因此在一定范圍內(nèi)可以看成是隨機(jī)的。rand()會(huì)返回一個(gè)范圍在0到RAND_MAX(至少是32767)之間的偽隨機(jī)數(shù)(整數(shù))。
在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設(shè)置隨機(jī)數(shù)種子,如果沒(méi)有設(shè)置隨機(jī)數(shù)種子,rand()函數(shù)在調(diào)用時(shí),自動(dòng)設(shè)計(jì)隨機(jī)數(shù)種子為1。隨機(jī)種子相同,每次產(chǎn)生的隨機(jī)數(shù)也會(huì)相同。rand()函數(shù)需要的頭文件是:<stdlib.h>
rand()函數(shù)原型:int rand(void);使用rand()函數(shù)產(chǎn)生1-100以?xún)?nèi)的隨機(jī)整數(shù):int number1 = rand() % 100+1。
擴(kuò)展資料:
使用rand()和srand()產(chǎn)生指定范圍內(nèi)的隨機(jī)整數(shù)的方法,“模除+加法”的方法因?yàn)?,?duì)于任意數(shù),0<=rand()%(n-m+1)<=n-m,因此,0+m<=rand()%(n-m+1)+m<=n-m+m,因此,如要產(chǎn)生[m,n]范圍內(nèi)的隨機(jī)數(shù)num,可用:
int num=rand()%(n-m+1)+m。其中的rand()%(n-m+1)+m算是一個(gè)公式,記錄一下方便以后查閱。比如產(chǎn)生10~30的隨機(jī)整數(shù):srand(time(0)),int a = rand() % (21)+10。
vb中,rand()函數(shù)什么意思?
Rand(number) 返回一個(gè)Single類(lèi)型的隨機(jī)數(shù),小于 1 但大于或等于 0 的值.
如果 number 的值 小于 0 每次都得到相同的隨機(jī)數(shù)。 大于 0 或省略 產(chǎn)生下一個(gè)隨機(jī)數(shù)。 等于 0 返回最近一次生成的隨機(jī)數(shù)。
使用之前最好使用Randomize 例如產(chǎn)生N到M的隨機(jī)數(shù),Int(Rand()*M-N+1)+N
vb6.0中沒(méi)有Rand函數(shù),如寫(xiě)Rand(3)就會(huì)出錯(cuò)。
Rand()函數(shù)只產(chǎn)生1到10單不包括0和1的隨機(jī)數(shù)默認(rèn)為單精度數(shù)0.0000001—0.9999999(開(kāi)區(qū)間(0,1))。
要產(chǎn)生1-10的隨機(jī)小數(shù)時(shí):
只能不包括1和10:rand*9+1(即1.0000001—9.9999999之間,開(kāi)區(qū)間(1,10))
要是產(chǎn)生1-10的隨機(jī)整數(shù)時(shí):
不包括1和10:int(rand*8)+2(即2—9之間的整數(shù))
包括1和10時(shí):int(rand*10)+1(即1—10之間的整數(shù))
Rand函數(shù)和srand函數(shù)在keil中怎么用,能給我舉個(gè)例子嗎
srand((unsigned)time(NULL))則使用系統(tǒng)定時(shí)/計(jì)數(shù)器的值作為隨機(jī)種子。每個(gè)種子對(duì)應(yīng)一組根據(jù)算法預(yù)先生成的隨機(jī)數(shù),所以,在相同的平臺(tái)環(huán)境下,不同時(shí)間產(chǎn)生的隨機(jī)數(shù)會(huì)是不同的,相應(yīng)的,若將srand(unsigned)time(NULL)改為srand(TP)(TP為任一常量),則無(wú)論何時(shí)運(yùn)行、運(yùn)行多少次得到的“隨機(jī)數(shù)”都會(huì)是一組固定的序列,因此srand生成的隨機(jī)數(shù)是偽隨機(jī)數(shù)。[1]
庫(kù)函數(shù)中系統(tǒng)提供了兩個(gè)函數(shù)用于產(chǎn)生隨機(jī)數(shù):srand()和rand()。 原型為:
函數(shù)一:int rand(void);
返回一個(gè)[0,RAND_MAX]間的隨機(jī)整數(shù)。
函數(shù)二:void srand(unsigned seed);
參數(shù)seed是rand()的種子,用來(lái)初始化rand()的起始值。
但是,要注意的是所謂的“偽隨機(jī)數(shù)”指的并不是假的隨機(jī)數(shù)。其實(shí)絕對(duì)的隨機(jī)數(shù)只是一種理想狀態(tài)的隨機(jī)數(shù),計(jì)算機(jī)只能生成相對(duì)的隨機(jī)數(shù)即偽隨機(jī)數(shù)。計(jì)算機(jī)生 成的偽隨機(jī)數(shù)既是隨機(jī)的又是有規(guī)律的 —— 一部份遵守一定的規(guī)律,一部份則不遵守任何規(guī)律。比如“世上沒(méi)有兩片形狀完全相同的樹(shù)葉”,這體現(xiàn)到了事物的特性 —— 差異性;但是每種樹(shù)的葉子都有近似的形狀,這正是事物的共性 —— 規(guī)律性。從這個(gè)角度講,我們就可以接受這樣的事實(shí)了:計(jì)算機(jī)只能產(chǎn)生偽隨機(jī)數(shù)而不是絕對(duì)的隨機(jī)數(shù)。
系統(tǒng)在調(diào)用rand()之前都會(huì)自動(dòng)調(diào)用srand(),如果用戶(hù)在rand()之前曾調(diào)用過(guò)srand()給參數(shù)seed指定了一個(gè)值,那么 rand()就會(huì)將seed的值作為產(chǎn)生偽隨機(jī)數(shù)的初始值;而如果用戶(hù)在rand()前沒(méi)有調(diào)用過(guò)srand(),那么系統(tǒng)默認(rèn)將1作為偽隨機(jī)數(shù)的初始 值。如果給了一個(gè)定值,那么每次rand()產(chǎn)生的隨機(jī)數(shù)序列都是一樣的~~
所以為了避免上述情況的發(fā)生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來(lái) 產(chǎn)生種子。如果仍然覺(jué)得時(shí)間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某個(gè)合適的整數(shù)。 例如,srand((unsigned)time(NULL)*10)
另外,關(guān)于time_t time(0):time_t被定義為長(zhǎng)整型,它返回從1970年1月1日零時(shí)零分零秒到目前為止所經(jīng)過(guò)的時(shí)間,單位為秒。
srand()、rand()用法舉例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
voidmain()
{
inti,j;
srand((int)time(0));
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d",j);
}
}
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com