用rand函數(shù)吧,好久不用C語言,不太記得,貌似是int a=rand()% X(X即范圍)這是偽隨機(jī)數(shù)
站在用戶的角度思考問題,與客戶深入溝通,找到永仁網(wǎng)站設(shè)計(jì)與永仁網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋永仁地區(qū)。
#includetime.h
srand(time(NULL));使用前用這條語句初始化
使用int a=rand() / RAND_MAX * n;
就得到真正的隨機(jī)數(shù)
#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]);
}
}
利用srand((unsigned int)(time(NULL))是一種方法,因?yàn)槊恳淮芜\(yùn)行程序的時(shí)間是不同的。
在C語言里所提供的隨機(jī)數(shù)發(fā)生器的用法:現(xiàn)在的C編譯器都提供了一個(gè)基于ANSI標(biāo)準(zhǔn)的偽隨機(jī)數(shù)發(fā)生器函數(shù),用來生成隨機(jī)數(shù)。它們就是rand()和srand()函數(shù)。這二個(gè)函數(shù)的工作過程如下:
1) 首先給srand()提供一個(gè)種子,它是一個(gè)unsigned int類型,其取值范圍從0~65535;
2) 然后調(diào)用rand(),它會(huì)根據(jù)提供給srand()的種子值返回一個(gè)隨機(jī)數(shù)(在0到32767之間)
3) 根據(jù)需要多次調(diào)用rand(),從而不間斷地得到新的隨機(jī)數(shù);
4) 無論什么時(shí)候,都可以給srand()提供一個(gè)新的種子,從而進(jìn)一步“隨機(jī)化”rand()的輸出結(jié)果。
下面是0~32767之間的隨機(jī)數(shù)程序:
#include stdlib.h
#include stdio.h
#include time.h ? ? ? ? ? // 使用當(dāng)前時(shí)鐘做種子
void main(void)
{int i;
srand((unsigned)time( NULL ) ); ? ? ? ? ?// 初始化隨機(jī)數(shù)
for(i = 0; i 10;i++) ? ? ? ? ? ? ? ? ? ? ? ? ?// 打印出 10 個(gè)隨機(jī)數(shù)
printf("%d\n", rand() );
}
根據(jù)上面的程序可以很容易得到0~1之間的隨機(jī)數(shù):
#include stdlib.h
#include stdio.h
#include time.h
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i 10;i++)
printf("%5.2f\n", rand()/32767.0);
}
而產(chǎn)生1~100之間的隨機(jī)數(shù)可以這樣寫:
#include stdlib.h
#include stdio.h
#include time.h
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i 10;i++)
printf("%d\n", rand()%100+1);
}
擴(kuò)展資料:
C語言高效編程技巧:
一:以空間換時(shí)間
計(jì)算機(jī)程序中最大的矛盾是空間和時(shí)間的矛盾,那么,從這個(gè)角度出發(fā)逆向思維來考慮程序的效率問題
二:數(shù)學(xué)方法解決問題
數(shù)學(xué)是計(jì)算機(jī)之母,沒有數(shù)學(xué)的依據(jù)和基礎(chǔ),就沒有計(jì)算機(jī)發(fā)展,所以在編寫程序的時(shí)候,采用一些數(shù)學(xué)方法會(huì)對(duì)程序的執(zhí)行效率有數(shù)量級(jí)的提高。
三:使用位操作
實(shí)現(xiàn)高效的C語言編寫的第三招----使用位操作,減少除法和取模的運(yùn)算。
在計(jì)算機(jī)程序中,數(shù)據(jù)的位是可以操作的最小數(shù)據(jù)單位,理論上可以用“位運(yùn)算”來完成所有的運(yùn)算和操作。一般的位操作是用來控制硬件的,或者做數(shù)據(jù)變換使用,但是,靈活的位操作可以有效提高程序運(yùn)行的效率。
參考資料來源:百度百科-C語言
編譯環(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è)方法演算出來了真隨機(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ù)。