任何程序都會(huì)用到stdio.h,所以這個(gè)跟隨機(jī)數(shù)函數(shù)沒多大關(guān)系,stdlib.h包含的是隨機(jī)數(shù)函數(shù)rand() 和隨機(jī)數(shù)函數(shù) srand(seed) 這兩個(gè)通常配套使用,srand(seed)意思是置一個(gè)隨機(jī)數(shù)種子,然后調(diào)用rand()函數(shù)得到一個(gè)-90~32767之間的整數(shù),置種子的時(shí)候我們要求種子是不一樣的,否則每次用rand()函數(shù)都會(huì)得到相同的結(jié)果。由于時(shí)間每一秒都會(huì)發(fā)生變化,因此我們選擇用時(shí)間作為隨機(jī)數(shù)種子,去實(shí)踐的函數(shù)time()就包含在time.h頭文件里,所以我們要用到time.h這個(gè)頭文件。
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出彭山免費(fèi)做網(wǎng)站回饋大家。
給個(gè)例子
我要隨即輸出一個(gè)整數(shù)
#include
#include
#include
void main()
{
int i;
srand(time(NULL));//置隨機(jī)數(shù)種子,沒有這句也能運(yùn)行,但是多次運(yùn)行這個(gè)程序的時(shí)候,隨后用rand()得到的數(shù)字會(huì)相同
i=rand();用rand()函數(shù)獲得隨機(jī)數(shù),然后賦給不變量i
printf("%d",i);
}
一、首先包含必要的頭文件
#includestdio.h
這個(gè)包含用于輸入輸出的函數(shù)。
#includestdlib.h
這個(gè)包含初始化隨機(jī)數(shù)種子、產(chǎn)生隨機(jī)數(shù)的函數(shù)。
#includetime.h
這個(gè)包含與時(shí)間有關(guān)的函數(shù),初始化隨機(jī)數(shù)種子時(shí)可以用到。
二、使用如下公式產(chǎn)生在區(qū)間[min,max]之間的隨機(jī)數(shù)
int r=rand()%(max-min+1)+min;
三、一個(gè)例子,產(chǎn)生10個(gè)[1,100]的隨機(jī)整數(shù)
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用當(dāng)前時(shí)間初始化隨機(jī)數(shù)種子
srand(time(NULL));
printf("隨機(jī)產(chǎn)生的10個(gè)1-100的整數(shù)是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、運(yùn)行結(jié)果的截圖
截圖1
截圖2
函數(shù)名: rand
功 能: 隨機(jī)數(shù)發(fā)生器
用 法: void rand(void);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int i;
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i10; i++)
printf("%d\n", rand() % 100);
return 0;
}
這樣產(chǎn)生的隨機(jī)數(shù)為偽隨機(jī)數(shù),如果要產(chǎn)生隨機(jī)數(shù),可以在前面加一個(gè)隨機(jī)種子,srand(time(0)); time(0)返回的是系統(tǒng)的時(shí)間(從1970.1.1午夜算起)的總秒數(shù),單位:秒
#include stdlib.h
#include stdio.h
#include time.h
int main(void)
{
srand(time(0));
int i;
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i10; i++)
printf("%d\n", rand() % 100);這樣就產(chǎn)生了0到99的隨機(jī)數(shù)(隨機(jī)數(shù)對(duì)100取余的結(jié)果)
return 0;
}
可以自己試試,沒加隨機(jī)種子時(shí)候,rand()%100每次產(chǎn)生的數(shù)都是一樣的,而加了srand(time(0))效果就不同了。
通過敲代碼實(shí)驗(yàn),并且參考以下網(wǎng)址
C++的隨機(jī)函數(shù)
C++/c語言里,是沒有辦法得到一個(gè)真正的隨機(jī)數(shù)序列的.想要等到一個(gè)真正的隨機(jī)數(shù)序列,必須使用特定的隨機(jī)數(shù)硬件發(fā)生器.也就是說,軟件是沒有辦法產(chǎn)生真正的隨機(jī)數(shù).因?yàn)檐浖仨毎凑找欢ǖ倪壿媮砭帉?既然是按照特定的邏輯(也就是說算法)來編寫 ,那么產(chǎn)生的運(yùn)算結(jié)果就是一定的.這一點(diǎn),就是軟件天生的特性.想想看,如果一個(gè)軟件,同樣的代碼喝條件下,每次運(yùn)行的結(jié)果不一樣,那還有誰會(huì)用?
所以,在C++/C語言中,就有了"偽隨機(jī)數(shù)"的概念.意思也就是說,通過一個(gè)特定的算法,產(chǎn)生一個(gè)假的隨機(jī)數(shù)序列.那么,程序員又希望這個(gè)隨機(jī)數(shù)序列跟接近真正的隨機(jī)數(shù)序列,也就是希望得到的序列的不一樣,所以有了一個(gè)"播種"的概念.
srand(unsgined int seed);
這個(gè)函數(shù)就是用來"播種"的.通過一個(gè)"種子"(SEED),來控制隨機(jī)數(shù)的序列不一樣.只要種子不一樣,那么通過rand()得到的隨機(jī)數(shù)序列就不一樣.反過來說,如果種子一樣,那么通過srand()得到的隨機(jī)數(shù)就是一樣的.
srand(0);
for( int i = 0; i 10; i++)
{
coutrand()' ';
}
你試著將這個(gè)程序執(zhí)行兩次,你會(huì)發(fā)現(xiàn)兩次的結(jié)果一樣。那是因?yàn)?,一旦“種子”確定了,那么這個(gè)隨機(jī)數(shù)序列就確定了。軟件天生的“行為可重復(fù)性”決定了這一點(diǎn)。
所以,一般在播種的時(shí)候,喜歡用一個(gè)隨機(jī)的種子.在絕大多數(shù)的情況下,會(huì)使用當(dāng)前的系統(tǒng)時(shí)間.這個(gè)數(shù)字在每次程序運(yùn)行的時(shí)候都不一樣.除非你手動(dòng)的改系統(tǒng)時(shí)間.
編程時(shí)有時(shí)需要隨機(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ī)的,另外使用這兩個(gè)函數(shù)時(shí)
應(yīng)含入
#include stdlib.h
#include time.h
頭文件。
一個(gè)例子:
用法如下:
#include stdlib.h
#include stdio.h
#include time.h
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統(tǒng)時(shí)間當(dāng)種子,對(duì)隨機(jī)函數(shù)進(jìn)行初始化
for( i = 0; i 10;i++ )
{
k=rand()%100; //產(chǎn)生各個(gè)隨機(jī)數(shù)
printf( " k=%d\n", k );
}
}
再抄個(gè)~
在VC中設(shè)計(jì)到隨機(jī)數(shù)有兩個(gè)函數(shù)
srand() and rand()
srand() 的作用是是一個(gè)種子,提供每次獲得隨機(jī)數(shù)的基數(shù)而已,rand()根據(jù)種子而產(chǎn)生隨機(jī)數(shù)
注意
1:srand() 里的值必須是動(dòng)態(tài)變化的,否則得到的隨機(jī)數(shù)就是一個(gè)固定數(shù)
2:其實(shí)可以不用寫srand() ,只用rand()就可以了,省事,簡(jiǎn)單,例子如下
如果我們想得到一個(gè) 0-60的隨機(jī)數(shù)那么可以寫成
int i;
i=rand()%60;
就可以了。
當(dāng)然最好有個(gè)統(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í)這個(gè)程序也不錯(cuò)
#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;
}
不拿時(shí)間作隨機(jī)數(shù),可以設(shè)一個(gè)種子數(shù)不清100這樣就產(chǎn)生0~99間的隨機(jī)數(shù)。
不過我沒有測(cè)試從復(fù)率,誰測(cè)了告訴我一下。
隨機(jī)數(shù)函數(shù):int rand();
使用:
int value = rand();
value 將被隨機(jī)的賦一個(gè)值,但是這樣編譯以后,每次的運(yùn)行結(jié)果實(shí)際上是一樣的,也就是同一個(gè)隨機(jī)數(shù)。所以提供了隨機(jī)數(shù)種子這個(gè)函數(shù): srand(int)
使用:
srand(n);
int value = rand();
第二個(gè)問題:
輸入輸出大多定義在 stdio.h 里面,先寫一個(gè) hello world 吧。
srand()函數(shù)是C語言中產(chǎn)生隨機(jī)數(shù)的一個(gè)函數(shù)。
函數(shù)原型: void srand(unsigned seed)
功 ? ? ?能: 產(chǎn)生隨機(jī)數(shù)的起始發(fā)生數(shù)據(jù),和rand函數(shù)配合使用
頭 文 ?件: stdlib.h ? time.h
舉例如下:
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main(void)
{
int?i;
time_t?t;
srand((unsigned)?time(t));
printf("Ten?random?numbers?from?0?to?99\n\n");
for?(i=0;?i10;?i++)
printf("%d\n",?rand()%100);
return?0;
}
運(yùn)行程序,會(huì)發(fā)現(xiàn)每次產(chǎn)生的隨機(jī)數(shù)都不一樣。這是因?yàn)檫@里采用了時(shí)間作為種子,而時(shí)間在每時(shí)每刻都不相同,所以就產(chǎn)生了"隨機(jī)"的隨機(jī)數(shù)了。所以,要想產(chǎn)生不同的隨機(jī)數(shù),在使用rand之前需要先調(diào)用srand。