用rand函數(shù)吧,好久不用C語(yǔ)言,不太記得,貌似是int a=rand()% X(X即范圍)這是偽隨機(jī)數(shù)
創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為近1000家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)!
#includetime.h
srand(time(NULL));使用前用這條語(yǔ)句初始化
使用int a=rand() / RAND_MAX * n;
就得到真正的隨機(jī)數(shù)
C語(yǔ)言隨機(jī)函數(shù)主要用于實(shí)現(xiàn)一組隨機(jī)數(shù)的生成。
代碼示例如下:
#includestdio.h
#includestdlib.h
int main ()
{
int a;
a=rand()%4;
printf("%d\n",a);
return 0;
}
C預(yù)先生成一組隨機(jī)數(shù),每次調(diào)用隨機(jī)函數(shù)時(shí)從指針?biāo)赶虻奈恢瞄_始取值,因此使用rand()重復(fù)運(yùn)行程序產(chǎn)生的隨機(jī)數(shù)都是相同的,可以通過srand()函數(shù)來(lái)改變指針位置。
擴(kuò)展資料:
C語(yǔ)言隨機(jī)函數(shù)指針位置
void srand( unsigned int seed )
改變隨機(jī)數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因?yàn)闀r(shí)間每時(shí)每刻都在改變,產(chǎn)生的seed值都不同。
基于毫秒級(jí)隨機(jī)數(shù)產(chǎn)生方法:
#includewindows.h
種子設(shè)為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:百度百科-C語(yǔ)言隨機(jī)函數(shù)
C語(yǔ)言產(chǎn)生有范圍隨機(jī)數(shù)需要random函數(shù)。
random即隨機(jī)數(shù)發(fā)生器,使用之前需要使用Randomize語(yǔ)句進(jìn)行隨機(jī)數(shù)種子的初始化。RANDOM產(chǎn)生的是偽隨機(jī)數(shù)或者說(shuō)是用一種復(fù)雜的方法計(jì)算得到的序列值,因此每次運(yùn)算時(shí)需要一個(gè)不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機(jī)數(shù)了。這也正是RANDOMIZE隨機(jī)初始化的作用。
VB里用
NEW
RANDOM()來(lái)表示初始化。
功
能:
隨機(jī)數(shù)發(fā)生器
用
法:
int
random(int
num);
程序例:
#include
#include
#include
/*
prints
a
random
number
in
the
range
to
99
*/
int
main(void)
{
randomize();
隨機(jī)數(shù)種子被初始化時(shí)
printf("Random
number
in
the
0-99
range:
%d\n",
random
(100));
return
0;
}
#include
stdlib.h
#include
stdio.h
#include
time.h
void
main()
{
int
i,count[100];
for(i=0;i100;i++)
{count[i]=random(100);//設(shè)定
取值范圍
,這表明
隨機(jī)數(shù)
是0-100之間取
printf("%d\n",count[i]);
}
}
編譯環(huán)境為:vs2013
產(chǎn)生1到3的整型隨機(jī)數(shù)的代碼如下:
#includestdio.h
#includetime.h
#includestdlib.h
#define max 3 ? //這個(gè)函數(shù)的意義為:隨機(jī)生成最大的數(shù)為3
#define min 1 ?? //這個(gè)函數(shù)的意義為:隨機(jī)生成最小的數(shù)為1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min; ?// 這里的意義,“%”為模運(yùn)算
printf("隨機(jī)數(shù)為:%d\n", num);
system("pause"); ?//這個(gè)代碼可以讓彈出的黑框不會(huì)一下就消失
return 0;
}
擴(kuò)展資料:
根據(jù)密碼學(xué)原理,隨機(jī)數(shù)的隨機(jī)性檢驗(yàn)可以分為三個(gè)標(biāo)準(zhǔn):
條件一、統(tǒng)計(jì)學(xué)偽隨機(jī)性。統(tǒng)計(jì)學(xué)偽隨機(jī)性指的是在給定的隨機(jī)比特流樣本中,1的數(shù)量大致等于0的數(shù)量,同理,“10”“01”“00”“11”四者數(shù)量大致相等。類似的標(biāo)準(zhǔn)被稱為統(tǒng)計(jì)學(xué)隨機(jī)性。滿足這類要求的數(shù)字在人類“一眼看上去”是隨機(jī)的。
條件二、密碼學(xué)安全偽隨機(jī)性。其定義為,給定隨機(jī)樣本的一部分和隨機(jī)算法,不能有效的演算出隨機(jī)樣本的剩余部分。
條件三、真隨機(jī)性。其定義為隨機(jī)樣本不可重現(xiàn)。實(shí)際上只要給定邊界條件,真隨機(jī)數(shù)并不存在,可是如果產(chǎn)生一個(gè)真隨機(jī)數(shù)樣本的邊界條件十分復(fù)雜且難以捕捉(比如計(jì)算機(jī)當(dāng)?shù)氐谋镜纵椛洳▌?dòng)值),可以認(rèn)為用這個(gè)方法演算出來(lái)了真隨機(jī)數(shù)。
隨機(jī)數(shù)分為三類:
①偽隨機(jī)數(shù):滿足第一個(gè)條件的隨機(jī)數(shù)。
②密碼學(xué)安全的偽隨機(jī)數(shù):同時(shí)滿足前兩個(gè)條件的隨機(jī)數(shù)??梢酝ㄟ^密碼學(xué)安全偽隨機(jī)數(shù)生成器
計(jì)算得出。
③真隨機(jī)數(shù):同時(shí)滿足三個(gè)條件的隨機(jī)數(shù)。
c語(yǔ)言的獲取隨機(jī)數(shù)的函數(shù)為rand(),
可以獲得一個(gè)非負(fù)整數(shù)的隨機(jī)數(shù)。要調(diào)用rand需要引用頭文件stdlib.h。
要讓隨機(jī)數(shù)限定在一個(gè)范圍,可以采用模除加加法的方式。
要產(chǎn)生隨機(jī)數(shù)r,
其范圍為
m=r=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對(duì)于任意數(shù),
0=rand()%(n-m+1)=n-m
于是
0+m=rand()%(n-m+1)+m=n-m+m
即
m=rand()%(n-m+1)+m=n
網(wǎng)站名稱:c語(yǔ)言范圍內(nèi)隨機(jī)函數(shù) c語(yǔ)言如何隨機(jī)產(chǎn)生一定范圍的數(shù)
網(wǎng)頁(yè)網(wǎng)址:http://jinyejixie.com/article26/dosshcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、面包屑導(dǎo)航、企業(yè)建站、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)