隨機(jī)數(shù)函數(shù):int rand();

成都創(chuàng)新互聯(lián)公司2013年成立,先為秀英等服務(wù)建站,秀英等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為秀英企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
使用:
int value = rand();
value 將被隨機(jī)的賦一個值,但是這樣編譯以后,每次的運(yùn)行結(jié)果實(shí)際上是一樣的,也就是同一個隨機(jī)數(shù)。所以提供了隨機(jī)數(shù)種子這個函數(shù): srand(int)
使用:
srand(n);
int value = rand();
第二個問題:
輸入輸出大多定義在 stdio.h 里面,先寫一個 hello world 吧。
C語言隨機(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ù)時從指針?biāo)赶虻奈恢瞄_始取值,因此使用rand()重復(fù)運(yùn)行程序產(chǎn)生的隨機(jī)數(shù)都是相同的,可以通過srand()函數(shù)來改變指針位置。
擴(kuò)展資料:
C語言隨機(jī)函數(shù)指針位置
void srand( unsigned int seed )
改變隨機(jī)數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因?yàn)闀r間每時每刻都在改變,產(chǎn)生的seed值都不同。
基于毫秒級隨機(jī)數(shù)產(chǎn)生方法:
#includewindows.h
種子設(shè)為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:百度百科-C語言隨機(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]);
}
}
C++的隨機(jī)函數(shù)
C++/c語言里,是沒有辦法得到一個真正的隨機(jī)數(shù)序列的.想要等到一個真正的隨機(jī)數(shù)序列,必須使用特定的隨機(jī)數(shù)硬件發(fā)生器.也就是說,軟件是沒有辦法產(chǎn)生真正的隨機(jī)數(shù).因?yàn)檐浖仨毎凑找欢ǖ倪壿媮砭帉?既然是按照特定的邏輯(也就是說算法)來編寫 ,那么產(chǎn)生的運(yùn)算結(jié)果就是一定的.這一點(diǎn),就是軟件天生的特性.想想看,如果一個軟件,同樣的代碼喝條件下,每次運(yùn)行的結(jié)果不一樣,那還有誰會用?
所以,在C++/C語言中,就有了"偽隨機(jī)數(shù)"的概念.意思也就是說,通過一個特定的算法,產(chǎn)生一個假的隨機(jī)數(shù)序列.那么,程序員又希望這個隨機(jī)數(shù)序列跟接近真正的隨機(jī)數(shù)序列,也就是希望得到的序列的不一樣,所以有了一個"播種"的概念.
srand(unsgined int seed);
這個函數(shù)就是用來"播種"的.通過一個"種子"(SEED),來控制隨機(jī)數(shù)的序列不一樣.只要種子不一樣,那么通過rand()得到的隨機(jī)數(shù)序列就不一樣.反過來說,如果種子一樣,那么通過srand()得到的隨機(jī)數(shù)就是一樣的.
srand(0);
for( int i = 0; i 10; i++)
{
coutrand()' ';
}
你試著將這個程序執(zhí)行兩次,你會發(fā)現(xiàn)兩次的結(jié)果一樣。那是因?yàn)椋坏胺N子”確定了,那么這個隨機(jī)數(shù)序列就確定了。軟件天生的“行為可重復(fù)性”決定了這一點(diǎn)。
所以,一般在播種的時候,喜歡用一個隨機(jī)的種子.在絕大多數(shù)的情況下,會使用當(dāng)前的系統(tǒng)時間.這個數(shù)字在每次程序運(yùn)行的時候都不一樣.除非你手動的改系統(tǒng)時間.
編程時有時需要隨機(jī)輸入一些數(shù),這是調(diào)用隨機(jī)函數(shù)可以完成此相命令.
# include “stdio.h”
# include “stdlib.h”
# include “time.h” /*需引用的頭文件*/
srand((unsigned)time(NULL)); /*隨機(jī)種子*/
n=rand()%(Y-X+1)+X; /*n為X~Y之間的隨機(jī)數(shù)*/
進(jìn)一步解釋
有
srand()設(shè)置隨機(jī)數(shù)種子,rand()得到隨機(jī)數(shù)
random()的函數(shù)原型為int random(int num)
它的作用是Returns an integer between 0 and (num-1)
而randomize的函數(shù)原型為void randomize(void)
它的作用是Initializes the random number generator with a random value.
它們的區(qū)別是前者限定隨機(jī)數(shù)的產(chǎn)生范圍,而后者這完全是隨機(jī)的,另外使用這兩個函數(shù)時
應(yīng)含入
#include stdlib.h
#include time.h
頭文件。
一個例子:
用法如下:
#include stdlib.h
#include stdio.h
#include time.h
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統(tǒng)時間當(dāng)種子,對隨機(jī)函數(shù)進(jìn)行初始化
for( i = 0; i 10;i++ )
{
k=rand()%100; //產(chǎn)生各個隨機(jī)數(shù)
printf( " k=%d\n", k );
}
}
再抄個~
在VC中設(shè)計到隨機(jī)數(shù)有兩個函數(shù)
srand() and rand()
srand() 的作用是是一個種子,提供每次獲得隨機(jī)數(shù)的基數(shù)而已,rand()根據(jù)種子而產(chǎn)生隨機(jī)數(shù)
注意
1:srand() 里的值必須是動態(tài)變化的,否則得到的隨機(jī)數(shù)就是一個固定數(shù)
2:其實(shí)可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下
如果我們想得到一個 0-60的隨機(jī)數(shù)那么可以寫成
int i;
i=rand()%60;
就可以了。
當(dāng)然最好有個統(tǒng)一的標(biāo)注如下:
int i;
srand((unsigned)time( NULL ));
i=rand()%60;
這樣就OK了
例題隨機(jī)取數(shù),取1到99之間
1、#include iostream.h
#include stdlib.h
#include time.h
int main()
{
int n;//n為隨機(jī)數(shù)
srand(time(NULL));
n=1+rand()%99;
coutn;
return 0;
}
2、#includeiostream.h
#includestdlib.h
#includetime.h
void main()
{
int a;
srand((unsigned) time(NULL));
a=rand()%99+1;
couta;
}
3、#include iostream.h
#include stdlib.h
#include time.h
void main()
{
int j;
srand((unsigned)time(NULL));
loop:
j=rand()%100;
if(j==0)
{
cout"error"endl;
goto loop;
}
else coutjendl;
}
4、如果象樓上的你的那種做法做下去
那應(yīng)該是100%而不是98%
你一定是少了
srand(...........);
其實(shí)這個程序也不錯
#include iostream
#include cstdlib
using namespace std;
int main()
{
int counter;
for(counter=0;counter10;counter++)
{
srand(counter+1);
cout"Random number"counter+1":"rand()endl;
}
system("pause");
return 0;
}
5、#include iostream.h
#include stdlib.h
int main()
{
int shu =100;
int n;//n為隨機(jī)數(shù)
srand(shu);
n=rand() % shu;
coutn;
return 0;
}
不拿時間作隨機(jī)數(shù),可以設(shè)一個種子數(shù)不清100這樣就產(chǎn)生0~99間的隨機(jī)數(shù)。
不過我沒有測試從復(fù)率,誰測了告訴我一下。
1、首先打開Visual stdio 2019,依次點(diǎn)擊文件,新建,項(xiàng)目新建以一個空白的項(xiàng)目:
2、新建新項(xiàng)目以后,右鍵點(diǎn)擊左邊的源文件,選擇添加,點(diǎn)擊添加項(xiàng):
3、選擇cpp,并將下方的擴(kuò)展名改為.c,然后點(diǎn)擊確定:
4、接下來就可以用編譯器編譯,使用rand()函數(shù)產(chǎn)生C語言的隨機(jī)數(shù),需要加入stdlib.h和time.h在表頭,rand()函數(shù)需要給srand()函數(shù)提供一個參數(shù),不然系統(tǒng)會給定一個默認(rèn)的參數(shù),如果參數(shù)為一任意的常量的話,得到的也是偽隨機(jī)數(shù):
4、按ctrl+F5就可以運(yùn)行程序了,在彈出的窗口中就會看到得到的所有隨機(jī)數(shù)了:
分類: 電腦/網(wǎng)絡(luò) 程序設(shè)計 其他編程語言
問題描述:
C語言中產(chǎn)生隨機(jī)數(shù)的函數(shù)是什么?(好象有兩個)以及這兩個函數(shù)的頭文件是什么?
解析:
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
int i;
srand((unsigned)time(NULL));
i = rand() % 100;
}
這樣產(chǎn)生的隨機(jī)數(shù)就是0-99之間的,
這二個函數(shù)的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然后調(diào)用rand(),它會根據(jù)提供給srand()的種子值返回一個隨機(jī)數(shù)(在0到32767之間)
3) 根據(jù)需要多次調(diào)用rand(),從而不間斷地得到新的隨機(jī)數(shù);
4) 無論什么時候,都可以給srand()提供一個新的種子,從而進(jìn)一步“隨機(jī)化”rand()的輸出結(jié)果。
本文名稱:c語言定義隨機(jī)函數(shù) C語言中隨機(jī)函數(shù)
文章地址:http://chinadenli.net/article6/hipiig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站策劃、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)