C語言連續(xù)生成隨機數(shù)的實現(xiàn)方法
srand()設(shè)置隨機數(shù)種子
rand()生成0 - RAND_MAX范圍的隨機數(shù)
加上其他運算,我們能夠生成任意范圍的隨機數(shù) 。rand()是將隨機數(shù)表里面的隨機數(shù)順序輸出。所以,如果不設(shè)定隨機數(shù)種子,生成的隨機數(shù)是固定的。
int main()
{
char str[10] = {0};
int j =0;
while(j < 10)
{//生成隨機的三個數(shù)字
int i = strlen(str);
for (;i < 3;i++){
str[i] = '0' + rand() % 10;
}//生成隨機兩個字母
str[i++] = 'A' + rand() % 26;
str[i] = 'A' +rand() % 26;//輸出結(jié)果
printf(str);
printf("\n");
j++;
str[0] = '\0';
}
return(0);
}
每次運行這個程序都將產(chǎn)生相同的結(jié)果
如圖第一次:
第二次運行:
于是用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ù)種子
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);
}
運行,
因為srand語句在循環(huán)內(nèi),每一次都用時間做種,程序執(zhí)行速度很快,所以獲取時間精度內(nèi),數(shù)值不便,于是每一次循環(huán)都是一樣的,如果把srand()放在循環(huán)外,就能產(chǎn)生不同的不同的序列:結(jié)果就是下面這樣:

看起來就是想要的結(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);
}
以隨機數(shù)加時間做種,但是萬變不離其宗,最后隨機數(shù)生成還是靠時間,但是加上隨機數(shù)之后呢,還取決于你循環(huán)里面調(diào)用rand()的次數(shù),不管怎么說,當程序確定,時間確定,生成的隨機數(shù)都是一樣的。
到此這篇關(guān)于C語言連續(xù)生成隨機數(shù)的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)C語言連續(xù)生成隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言 數(shù)據(jù)結(jié)構(gòu)之連續(xù)存儲數(shù)組的算法
這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)之連續(xù)存儲數(shù)組的算法的相關(guān)資料,需要的朋友可以參考下2017-01-01
delete[] p->elems和free(p->elems)區(qū)別介紹
delete[]和free()都是釋放內(nèi)存的函數(shù),但它們具有不同的使用方法和適用情況,這篇文章主要介紹了delete[] p->elems和free(p->elems)有什么區(qū)別,需要的朋友可以參考下2023-04-04
C++前綴樹字典樹的學(xué)習(xí)與模擬實現(xiàn)代碼示例
這篇文章主要介紹了C++前綴樹字典樹的學(xué)習(xí)與模擬實現(xiàn)代碼示例,Trie又被稱為前綴樹、字典樹,所以當然是一棵樹,上面這棵Trie樹包含的字符串集合是{in,inn,int,tea,ten,to},每個節(jié)點的編號是我們?yōu)榱嗣枋龇奖慵由先サ?需要的朋友可以參考下2023-07-07
C++ 數(shù)字的反轉(zhuǎn)實現(xiàn)實例
這篇文章主要介紹了C++ 數(shù)字的反轉(zhuǎn)實現(xiàn)實例的相關(guān)資料,需要的朋友可以參考下2017-06-06
Qt之使用GraphicsView框架實現(xiàn)思維導(dǎo)圖的示例
思維導(dǎo)圖可以更方便的整理知識,本文主要介紹了Qt之使用GraphicsView框架實現(xiàn)思維導(dǎo)圖的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

