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里面呢,也行,我們可以這樣寫(xiě)
#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ù)的入門(mén)教程
- c語(yǔ)言如何設(shè)置隨機(jī)數(shù)及逐行解析
相關(guān)文章
C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)之連續(xù)存儲(chǔ)數(shù)組的算法
這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)之連續(xù)存儲(chǔ)數(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++前綴樹(shù)字典樹(shù)的學(xué)習(xí)與模擬實(shí)現(xiàn)代碼示例
這篇文章主要介紹了C++前綴樹(shù)字典樹(shù)的學(xué)習(xí)與模擬實(shí)現(xiàn)代碼示例,Trie又被稱(chēng)為前綴樹(shù)、字典樹(shù),所以當(dāng)然是一棵樹(shù),上面這棵Trie樹(shù)包含的字符串集合是{in,inn,int,tea,ten,to},每個(gè)節(jié)點(diǎn)的編號(hào)是我們?yōu)榱嗣枋龇奖慵由先サ?需要的朋友可以參考下2023-07-07
C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06
Qt之使用GraphicsView框架實(shí)現(xiàn)思維導(dǎo)圖的示例
思維導(dǎo)圖可以更方便的整理知識(shí),本文主要介紹了Qt之使用GraphicsView框架實(shí)現(xiàn)思維導(dǎo)圖的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C++11標(biāo)準(zhǔn)庫(kù)bind函數(shù)應(yīng)用教程
bind函數(shù)定義在頭文件functional中,可以將bind函數(shù)看做成一個(gè)通用的函數(shù)適配器,他接收一個(gè)可調(diào)用對(duì)象,生成一個(gè)新的可調(diào)用對(duì)象來(lái)"適應(yīng)"原對(duì)象的參數(shù)列表。本文將帶大家詳細(xì)了解一下bind函數(shù)的應(yīng)用詳解2021-12-12

