用rand函數(shù)吧,好久不用C語言,不太記得,貌似是int a=rand()% X(X即范圍)這是偽隨機數(shù)
創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計,企業(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ò)營銷推廣服務(wù)!
#includetime.h
srand(time(NULL));使用前用這條語句初始化
使用int a=rand() / RAND_MAX * n;
就得到真正的隨機數(shù)
C語言隨機函數(shù)主要用于實現(xiàn)一組隨機數(shù)的生成。
代碼示例如下:
#includestdio.h
#includestdlib.h
int main ()
{
int a;
a=rand()%4;
printf("%d\n",a);
return 0;
}
C預(yù)先生成一組隨機數(shù),每次調(diào)用隨機函數(shù)時從指針所指向的位置開始取值,因此使用rand()重復(fù)運行程序產(chǎn)生的隨機數(shù)都是相同的,可以通過srand()函數(shù)來改變指針位置。
擴展資料:
C語言隨機函數(shù)指針位置
void srand( unsigned int seed )
改變隨機數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產(chǎn)生的seed值都不同。
基于毫秒級隨機數(shù)產(chǎn)生方法:
#includewindows.h
種子設(shè)為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:百度百科-C語言隨機函數(shù)
C語言產(chǎn)生有范圍隨機數(shù)需要random函數(shù)。
random即隨機數(shù)發(fā)生器,使用之前需要使用Randomize語句進行隨機數(shù)種子的初始化。RANDOM產(chǎn)生的是偽隨機數(shù)或者說是用一種復(fù)雜的方法計算得到的序列值,因此每次運算時需要一個不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機數(shù)了。這也正是RANDOMIZE隨機初始化的作用。
VB里用
NEW
RANDOM()來表示初始化。
功
能:
隨機數(shù)發(fā)生器
用
法:
int
random(int
num);
程序例:
#include
#include
#include
/*
prints
a
random
number
in
the
range
to
99
*/
int
main(void)
{
randomize();
隨機數(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è)定
取值范圍
,這表明
隨機數(shù)
是0-100之間取
printf("%d\n",count[i]);
}
}
編譯環(huán)境為:vs2013
產(chǎn)生1到3的整型隨機數(shù)的代碼如下:
#includestdio.h
#includetime.h
#includestdlib.h
#define max 3 ? //這個函數(shù)的意義為:隨機生成最大的數(shù)為3
#define min 1 ?? //這個函數(shù)的意義為:隨機生成最小的數(shù)為1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min; ?// 這里的意義,“%”為模運算
printf("隨機數(shù)為:%d\n", num);
system("pause"); ?//這個代碼可以讓彈出的黑框不會一下就消失
return 0;
}
擴展資料:
根據(jù)密碼學(xué)原理,隨機數(shù)的隨機性檢驗可以分為三個標準:
條件一、統(tǒng)計學(xué)偽隨機性。統(tǒng)計學(xué)偽隨機性指的是在給定的隨機比特流樣本中,1的數(shù)量大致等于0的數(shù)量,同理,“10”“01”“00”“11”四者數(shù)量大致相等。類似的標準被稱為統(tǒng)計學(xué)隨機性。滿足這類要求的數(shù)字在人類“一眼看上去”是隨機的。
條件二、密碼學(xué)安全偽隨機性。其定義為,給定隨機樣本的一部分和隨機算法,不能有效的演算出隨機樣本的剩余部分。
條件三、真隨機性。其定義為隨機樣本不可重現(xiàn)。實際上只要給定邊界條件,真隨機數(shù)并不存在,可是如果產(chǎn)生一個真隨機數(shù)樣本的邊界條件十分復(fù)雜且難以捕捉(比如計算機當(dāng)?shù)氐谋镜纵椛洳▌又担?,可以認為用這個方法演算出來了真隨機數(shù)。
隨機數(shù)分為三類:
①偽隨機數(shù):滿足第一個條件的隨機數(shù)。
②密碼學(xué)安全的偽隨機數(shù):同時滿足前兩個條件的隨機數(shù)??梢酝ㄟ^密碼學(xué)安全偽隨機數(shù)生成器
計算得出。
③真隨機數(shù):同時滿足三個條件的隨機數(shù)。
c語言的獲取隨機數(shù)的函數(shù)為rand(),
可以獲得一個非負整數(shù)的隨機數(shù)。要調(diào)用rand需要引用頭文件stdlib.h。
要讓隨機數(shù)限定在一個范圍,可以采用模除加加法的方式。
要產(chǎn)生隨機數(shù)r,
其范圍為
m=r=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對于任意數(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