C語(yǔ)言連續(xù)生成隨機(jī)數(shù)的實(shí)現(xiàn)方法
srand()設(shè)置隨機(jī)數(shù)種子
rand()生成0 - RAND_MAX范圍的隨機(jī)數(shù)
加上其他運(yùn)算,我們能夠生成任意范圍的隨機(jī)數(shù) 。rand()是將隨機(jī)數(shù)表里面的隨機(jī)數(shù)順序輸出。所以,如果不設(shè)定隨機(jī)數(shù)種子,生成的隨機(jī)數(shù)是固定的。
int main() { char str[10] = {0}; int j =0; while(j < 10) {//生成隨機(jī)的三個(gè)數(shù)字 int i = strlen(str); for (;i < 3;i++){ str[i] = '0' + rand() % 10; }//生成隨機(jī)兩個(gè)字母 str[i++] = 'A' + rand() % 26; str[i] = 'A' +rand() % 26;//輸出結(jié)果 printf(str); printf("\n"); j++; str[0] = '\0'; } return(0); }
每次運(yùn)行這個(gè)程序都將產(chǎn)生相同的結(jié)果
如圖第一次:
第二次運(yùn)行:
于是用srand()設(shè)置種子后嘗試,代碼如下
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[10] = {0}; int j =0; while(j < 10) { srand((unsigned)time(NULL)); //用時(shí)間添加隨機(jī)數(shù)種子 int i = strlen(str); for (;i < 3;i++){ str[i] = '0' + rand() % 10; } str[i++] = 'A' + rand() % 26; str[i] = 'A' +rand() % 26; printf(str); printf("\n"); j++; str[0] = '\0'; } return(0); }
運(yùn)行,因?yàn)閟rand語(yǔ)句在循環(huán)內(nèi),每一次都用時(shí)間做種,程序執(zhí)行速度很快,所以獲取時(shí)間精度內(nèi),數(shù)值不便,于是每一次循環(huán)都是一樣的,如果把srand()放在循環(huán)外,就能產(chǎn)生不同的不同的序列:結(jié)果就是下面這樣:
看起來(lái)就是想要的結(jié)果了
如果我非要把srand()放在while里面呢,也行,我們可以這樣寫
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[10] = {0}; int j =0; while(j < 10) { srand((unsigned)time(NULL) + (unsigned)rand()); int i = strlen(str); for (;i < 3;i++){ str[i] = '0' + rand() % 10; } str[i++] = 'A' + rand() % 26; str[i] = 'A' +rand() % 26; printf(str); printf("\n"); j++; str[0] = '\0'; } return(0); }
以隨機(jī)數(shù)加時(shí)間做種,但是萬(wàn)變不離其宗,最后隨機(jī)數(shù)生成還是靠時(shí)間,但是加上隨機(jī)數(shù)之后呢,還取決于你循環(huán)里面調(diào)用rand()的次數(shù),不管怎么說(shuō),當(dāng)程序確定,時(shí)間確定,生成的隨機(jī)數(shù)都是一樣的。
到此這篇關(guān)于C語(yǔ)言連續(xù)生成隨機(jī)數(shù)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)C語(yǔ)言連續(xù)生成隨機(jī)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C語(yǔ)言/C++中如何產(chǎn)生隨機(jī)數(shù)
- C語(yǔ)言中用于產(chǎn)生隨機(jī)數(shù)的函數(shù)使用方法總結(jié)
- c語(yǔ)言生成隨機(jī)數(shù)的方法(獲得一組不同的隨機(jī)數(shù))
- C語(yǔ)言/C++如何生成隨機(jī)數(shù)
- C語(yǔ)言中隨機(jī)數(shù)rand()函數(shù)詳解
- C語(yǔ)言隨機(jī)數(shù)生成教程(rand和srand用法)
- 使用c語(yǔ)言生成隨機(jī)數(shù)的示例分享
- C語(yǔ)言的隨機(jī)數(shù)rand()函數(shù)詳解
- C語(yǔ)言編程中生成隨機(jī)數(shù)的入門教程
- c語(yǔ)言如何設(shè)置隨機(jī)數(shù)及逐行解析
相關(guān)文章
VC中實(shí)現(xiàn)GB2312、BIG5、Unicode編碼轉(zhuǎn)換的方法
這篇文章主要介紹了VC中實(shí)現(xiàn)GB2312、BIG5、Unicode編碼轉(zhuǎn)換的方法,該功能非常實(shí)用,需要的朋友可以參考下2014-07-07C語(yǔ)言深入分析遞歸函數(shù)的實(shí)現(xiàn)
遞歸(recursive)函數(shù)是“自己調(diào)用自己”的函數(shù),無(wú)論是采用直接或間接調(diào)用方式。間接遞歸意味著函數(shù)調(diào)用另一個(gè)函數(shù)(然后可能又調(diào)用第三個(gè)函數(shù)等),最后又調(diào)用第一個(gè)函數(shù)。因?yàn)楹瘮?shù)不可以一直不停地調(diào)用自己,所以遞歸函數(shù)一定具備結(jié)束條件2022-04-04C++演講比賽管理系統(tǒng)實(shí)現(xiàn)流程實(shí)例
這篇文章主要介紹了C++演講比賽管理系統(tǒng)實(shí)現(xiàn)流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10C++使用easyx畫實(shí)時(shí)走動(dòng)的鐘表
這篇文章主要為大家詳細(xì)介紹了C++使用easyx畫實(shí)時(shí)走動(dòng)的鐘表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05詳解C語(yǔ)言中的getgrgid()函數(shù)和getgrnam()函數(shù)
這篇文章主要介紹了詳解C語(yǔ)言中的getgrgid()函數(shù)和getgrnam()函數(shù),是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08