什么是隨機(jī)數(shù)?
我們知道在C語言中,rand()函數(shù)可以用來產(chǎn)生隨機(jī)數(shù),但是這不是真真意義上的隨機(jī)數(shù),是一個(gè)偽隨機(jī)數(shù),是根據(jù)一個(gè)數(shù),我們可以稱它為種子,為基準(zhǔn)以某個(gè)遞推公式推算出來的一系數(shù),當(dāng)這系列數(shù)很大的時(shí)候,就符合正態(tài)公布,從而相當(dāng)于產(chǎn)生了隨機(jī)數(shù),但這不是真正的隨機(jī)數(shù),當(dāng)計(jì)算機(jī)正常開機(jī)后,這個(gè)種子的值是定了的,除非你破壞了系統(tǒng),為了改變這個(gè)種子的值,C提供了srand()函數(shù),它的原形是void srand( int a)。
設(shè)置種子產(chǎn)生隨機(jī)數(shù)
由于計(jì)算機(jī)沒有辦法產(chǎn)生真正的隨機(jī)數(shù)的,是用算法模擬,所以你只調(diào)用rand,每次算出來的東西是一樣的。設(shè)置一個(gè)種子后,根據(jù)種子的不同,就可以產(chǎn)生不同的數(shù)了。
Srand是種下隨機(jī)種子數(shù),你每回種下的種子不一樣,用Rand得到的隨機(jī)數(shù)就不一樣。為了每回種下一個(gè)不一樣的種子,所以就選用Time(0),Time(0)是得到當(dāng)前時(shí)時(shí)間值(因?yàn)槊繒r(shí)每刻時(shí)間是不一樣的了)。簡單來說:
srand()是給隨機(jī)數(shù)產(chǎn)生一個(gè)種子
time(NULL)就是把當(dāng)前的時(shí)間值作為種子
srand(time(0)):我們可以稱它為啟動種子,也叫隨機(jī)種子數(shù),
案列分析
一般用for語句來設(shè)置種子的個(gè)數(shù),我們還可以用算數(shù)運(yùn)算符來控制rand()隨機(jī)數(shù)的大小,比如想的到0-1之間的隨機(jī)數(shù),1-100之間的隨機(jī)數(shù)等等
實(shí)現(xiàn)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("%4.2f\n", rand() / 32767.0);
}
實(shí)現(xiàn)0-100之間的隨機(jī)數(shù),這個(gè)在我們猜數(shù)字的時(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);
}
實(shí)現(xiàn)0-32767之間的隨機(jī)數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-740529.html
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main()
{
int i;
srand(time(0));
/* 輸出 10 個(gè)隨機(jī)數(shù). */
for (i = 0; i < 10; i++)
printf("%6d\n", rand());
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-740529.html
到了這里,關(guān)于srand(time(0))函數(shù)的用法介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!