重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
rand函數(shù)
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比江陰網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式江陰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋江陰地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
函數(shù)頭文件:stdlib.h
函數(shù)定義:int rand(void)
函數(shù)功能:產(chǎn)生一個(gè)隨機(jī)數(shù)
函數(shù)說明:
rand函數(shù)產(chǎn)生的隨機(jī)數(shù)嚴(yán)格意義講不是真正的隨機(jī)數(shù),它里面采用了線性同余法計(jì)算出隨機(jī)數(shù),所謂的線性同語法簡(jiǎn)單來說就是使用了一個(gè)公式。
該方法有個(gè)最大周期M,也就是說該方法實(shí)在一定的范圍內(nèi)生成一串?dāng)?shù)字,不過這個(gè)M一般來說比較大,所以正常使用時(shí)一般看起來就是產(chǎn)生了隨機(jī)的數(shù)。
不過這個(gè)函數(shù)由于默認(rèn)種子是1,所以每次產(chǎn)生的隨機(jī)數(shù)都是相同的,也就是說每次運(yùn)行程序,產(chǎn)生的隨機(jī)數(shù)都是一樣的,失去了部分隨機(jī)的意義,所以一般會(huì)配合srand函數(shù)使用。
返回值: 返回0至RAND_MAX之間的隨機(jī)整數(shù)值,RAND_MAX的范圍最小在32767之間。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。且0-RAND_MAX每個(gè)數(shù)字被選中的機(jī)率是相同的。
srand函數(shù)
函數(shù)頭文件:stdlib.h
函數(shù)定義:void srand(unsigned int seed)
函數(shù)功能:設(shè)置隨機(jī)數(shù)種子
函數(shù)說明:通??梢杂胓etpid()(獲取當(dāng)前進(jìn)程的進(jìn)程識(shí)別碼)或者time(NULL)(獲取當(dāng)前系統(tǒng)的時(shí)間信息)來充當(dāng)種子,保持每次運(yùn)行時(shí)種子是不一樣的。
擴(kuò)展資料
當(dāng)srand()的內(nèi)容相同時(shí),則在rand()后產(chǎn)生相同的隨機(jī)數(shù)列;所以當(dāng)用time(NULL)來進(jìn)行初始隨機(jī)數(shù),根據(jù)時(shí)間來產(chǎn)生隨機(jī)數(shù),這樣就能產(chǎn)生不同的。
調(diào)用方法是srand(GetTickCount()),但是又不能在每次調(diào)用rand()的時(shí)候都用srand(GetTickCount())來初始化。
因?yàn)楝F(xiàn)在計(jì)算機(jī)運(yùn)行時(shí)間比較快,當(dāng)連續(xù)調(diào)用rand()時(shí),系統(tǒng)的時(shí)間還沒有更新,所以得到的隨機(jī)種子在一段時(shí)間內(nèi)是完全相同的,因此一般只在進(jìn)行一次大批隨機(jī)數(shù)產(chǎn)生之前進(jìn)行一次隨機(jī)種子的初始化。
參考資料:百度百科——rand函數(shù)
1、添加線程相關(guān)的頭文件:#includepthread.h
2、線程創(chuàng)建函數(shù)是pthread_create()函數(shù),該函數(shù)的原型為:
int?pthread_create(pthread_t?*thread,pthread_attr_t?*attr,void*?(*start_routine)(void*),void?*arg);
3、線程退出函數(shù)是pthread_exit()函數(shù),該函數(shù)的原型為:
void?pthread_exit(void?*retval);
創(chuàng)建線程的示例程序如下:
/*
**程序說明:創(chuàng)建線程函數(shù)pthread_create()函數(shù)的使用。
*/
#include?stdio.h
#include?pthread.h
#include?unistd.h
#include?stdlib.h
#include?string.h
//打印標(biāo)識(shí)符的函數(shù)
void?print_ids(const?char?*str)
{
pid_t?pid; //進(jìn)程標(biāo)識(shí)符
pthread_t?tid; //線程標(biāo)識(shí)符
pid=getpid(); //獲得進(jìn)程號(hào)
tid=pthread_self(); //獲得線程號(hào)
printf("%s?pid:%u?tid:%u?(0x%x)\n",
str,(unsigned?int)pid,(unsigned?int)tid,(unsigned?int)tid);?//打印進(jìn)程號(hào)和線程號(hào)
}
//線程函數(shù)
void*?pthread_func(void?*arg)
{
print_ids("new?thread:"); //打印新建線程號(hào)
return?((void*)0);
}
//主函數(shù)
int?main()
{
int?err;
pthread_t?ntid; //線程號(hào)
err=pthread_create(ntid,NULL,pthread_func,NULL); //創(chuàng)建一個(gè)線程
if(err?!=?0)
{
printf("create?thread?failed:%s\n",strerror(err));
exit(-1);
}
print_ids("main?thread:"); //打印主線程號(hào)
sleep(2);
return?0;
}
頭文件stdlib.h中
srand,
rand兩個(gè)函數(shù)
其中
srand一般取當(dāng)前時(shí)間做初始值,所以還要用
time.h
=================
srand函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù)。原型:void
srand(unsigned
seed);
用法:它需要提供一個(gè)種子,如:
srand(1);
直接使用1來初始化種子。不過常常使用系統(tǒng)時(shí)間來初始化,即使用
time函數(shù)來獲得系統(tǒng)時(shí)間,它的返回值為從
00:00:00
GMT,
January
1,
1970
到現(xiàn)在所持續(xù)的秒數(shù),然后將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型再傳給srand函數(shù),即:
srand((unsigned)
time(t));
還有一個(gè)經(jīng)常用法,不需要定義time_t型t變量,即:
srand((unsigned)
time(NULL));
直接傳入一個(gè)空指針,因?yàn)槟愕某绦蛑型⒉恍枰?jīng)過參數(shù)獲得的t數(shù)據(jù)。srand((int)getpid());
使用程序的ID(getpid())來作為初始化種子,在同一個(gè)程序中這個(gè)種子是固定的。
===============================
功
能::偽隨機(jī)數(shù)發(fā)生器所屬庫:stdlib.h用
法:
需要先調(diào)用srand初始化,一般用當(dāng)前日歷時(shí)間初始化隨機(jī)數(shù)種子,這樣每次執(zhí)行代碼都可以產(chǎn)生不同的隨機(jī)數(shù)。
函數(shù)原型:int
rand(void);