Qt實現(xiàn)生成指定范圍內(nèi)隨機數(shù)與隨機字符串
1.生成隨機數(shù)
生成隨機數(shù)主要用到了函數(shù)qsrand和qrand,這兩個函數(shù)在#include <QtGlobal>中,
qsrand用來設置一個種子,該種子為qrand生成隨機數(shù)的起始值。比如說qsrand(10),設置10為種子,那么qrand生成的隨機數(shù)就在[10,32767]之間。而如果在qrand()前沒有調(diào)用過qsrand(),那么qrand()就會自動調(diào)用qsrand(1),即系統(tǒng)默認將1作為隨機數(shù)的起始值。使用相同的種子生成的隨機數(shù)一樣。
下列代碼生成了[0,255]之間的3個隨機數(shù)。用于生成不同顏色
#include <QTime>
void generateRandomNumber()
{
qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()));
for(int i=0; i<3; i++)
{
int test =qrand()%256;
QTest::qSleep(1);
qDebug()<<test;
}
}注意:
這里我用的 是 msecsTo,并且加了 QTest::qSleep(1);防止連續(xù)可能會生成相同的隨機數(shù);
2.生成指定范圍隨機數(shù)
int generateRandomNumber(int min,int max)
{
qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()));
int num = qrand()%(max-min)+min;
qDebug()<<num;
return num;
}3.生成不重復的隨機數(shù)組
將產(chǎn)生的隨機數(shù)存放到數(shù)組中,在每次產(chǎn)生新的隨機數(shù)的同時,在隨機數(shù)列表中檢查是否包含該數(shù)
如果包含則重新生成,直到生成新的隨機數(shù)為止。
int getRandom(int min,int max)
{
QList<int> list;
int i,j;
bool res = true;
qsrand(QTime(0, 0, 0).msecsTo(QTime::currentTime()));
for (int i=0; i<10; i++) {
int num = qrand()%(max-min)+min;
list.append(num);
while(res)
{
for(j=0;j<i;j++)
{
if(list[i]==list[j])
break;
}
if(j<i)
{
list[i] = qrand()%(max-min)+min;
}
if(j==i)
res=!res;
}
}
}4.產(chǎn)生隨機字符串
QString getRandomString(int length)
{
qsrand(QDateTime::currentMSecsSinceEpoch());
const char ch[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int size = sizeof(ch);
char* str = new char[length + 1];
int num = 0;
for (int i = 0; i < length; ++i)
{
num = rand() % (size - 1);
str[i] = ch[num];
}
QString res(str);
return res;
}到此這篇關(guān)于Qt實現(xiàn)生成指定范圍內(nèi)隨機數(shù)與隨機字符串的文章就介紹到這了,更多相關(guān)Qt隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)樹之后序遍歷的實現(xiàn)
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之后序遍歷的實現(xiàn)的相關(guān)資料,這里提供一個簡單實例來實現(xiàn)后續(xù)遍歷,對于數(shù)據(jù)結(jié)構(gòu)樹的學習很有幫助,需要的朋友可以參考下2017-07-07
C++用winapi?socket實現(xiàn)局域網(wǎng)語音通話功能
這篇文章主要介紹了socket實現(xiàn)局域網(wǎng)語音通話?c++?winapi,功能介紹支持錄音設備查找以及播放設備查找,支持局域網(wǎng)語音通話,通話包含語音來電提醒和掛斷電話的提示信息,還能實時的獲取在線用戶的數(shù)量以及對應的id,需要的的朋友一起看看2022-06-06
C語言數(shù)據(jù)結(jié)構(gòu)與算法之時間空間復雜度入門
這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)與算法之時間空間復雜度的入門教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02
JS調(diào)用C++函數(shù)拋出異常及捕捉異常詳解
這篇文章主要介紹了js調(diào)用C++函數(shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-08-08
C++分析構(gòu)造函數(shù)與析造函數(shù)的特點梳理
本文對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)進行總結(jié),主要包括了構(gòu)造函數(shù)的初始化、重載、使用參數(shù)和默認參數(shù),拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù),希望能幫助讀者在程序開發(fā)中更好的理解類,屬于C/C++基礎2022-05-05

