欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt生成隨機數(shù)的方法

 更新時間:2021年11月26日 11:41:46   作者:草上爬  
本文主要介紹了Qt生成隨機數(shù),生成隨機數(shù)主要用到了函數(shù)qsrand和qrand,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1.生成隨機數(shù)

? ? ? ? 生成隨機數(shù)主要用到了函數(shù)qsrand和qrand,這兩個函數(shù)在#include <QtGlobal>中,qsrand用來設(shè)置一個種子,該種子為qrand生成隨機數(shù)的起始值。比如說qsrand(10),設(shè)置10為種子,那么qrand生成的隨機數(shù)就在[10,32767]之間。而如果在qrand()前沒有調(diào)用過qsrand(),那么qrand()就會自動調(diào)用qsrand(1),即系統(tǒng)默認將1作為隨機數(shù)的起始值。使用相同的種子生成的隨機數(shù)一樣。

? ? ? ?下列代碼生成了[0,9]之間的10個隨機數(shù)。

void generateRandomNumber()
{
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(int i=0; i<10; i++)
    {
        int test =qrand()%10;
        qDebug()<<test;
    }
}

? ? ? ? 注意代碼中使用的種子,這里沒有用固定值來作為種子,是希望函數(shù)在每次調(diào)用(間隔大于1秒)時生成的隨機數(shù)不一樣。

2.生成不重復(fù)的隨機數(shù)

? ? ? ? 這個沒有特別好的方法,需要自己手動計算,代碼如下。

void generateUniqueRandomNumber()
{
    int i,j;
    QList<int> numbersList;
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(i=0;i<10;i++)
    {
        numbersList.append(qrand()%10);
        bool flag=true;
        while(flag)
        {
            for(j=0;j<i;j++)
            {
                if(numbersList[i]==numbersList[j])
                {
                    break;
                }
            }
            if(j<i)
            {
                numbersList[i]=rand()%10;
            }
            if(j==i)
            {
                flag=!flag;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        qDebug()<<numbersList[i];
    }
}

3.生成遞增的隨機數(shù)

? ? ? ? 就是在隨機數(shù)生成后進行排序,Qt提供了一個非常好用的排序函數(shù)qSort,詳細的用法可參考Qt幫助。

void generateAscendRandomNumber()
{
    int i;
    QList<int> numbersList;
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(i=0;i<10;i++)
    {
        numbersList.append(qrand()%10);
    }
    qSort(numbersList.begin(),numbersList.end());
    for(i=0;i<10;i++)
    {
        qDebug()<<numbersList[i];
    }
}

? ? ? ? 輸出結(jié)果如下所示,可以看出qSort默認遞增排序,即使數(shù)列中包含相同的數(shù)。

到此這篇關(guān)于Qt生成隨機數(shù)的方法的文章就介紹到這了,更多相關(guān)Qt 隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 詳解C語言的void*空指針

    詳解C語言的void*空指針

    這篇文章主要為大家詳細介紹了C語言的void*空指針,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 詳解C++中多態(tài)的底層原理

    詳解C++中多態(tài)的底層原理

    要了解C++多態(tài)的底層原理需要我們對C指針有著深入的了解,這個在打印虛表的時候就可以見功底,所以快來跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • 基于VS+Opencv2.4.10微信跳一跳輔助工具

    基于VS+Opencv2.4.10微信跳一跳輔助工具

    這篇文章主要為大家詳細介紹了基于VS+Opencv2.4.10微信跳一跳輔助工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言實現(xiàn)英文單詞助手

    C語言實現(xiàn)英文單詞助手

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)單詞小助手,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 實例講解C語言編程中的結(jié)構(gòu)體對齊

    實例講解C語言編程中的結(jié)構(gòu)體對齊

    這篇文章主要介紹了C語言編程中的結(jié)構(gòu)體對齊,值得注意的是一些結(jié)構(gòu)體對齊的例子在不同編譯器下結(jié)果可能會不同,需要的朋友可以參考下
    2016-04-04
  • C++繼承類成員訪問權(quán)限修飾符詳解

    C++繼承類成員訪問權(quán)限修飾符詳解

    這篇文章主要為大家介紹了C++繼承類成員訪問權(quán)限修飾符,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • C++關(guān)于指針,繼承和多態(tài)介紹

    C++關(guān)于指針,繼承和多態(tài)介紹

    大家好,本篇文章主要講的是C++關(guān)于指針,繼承和多態(tài)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 關(guān)于C語言多線程pthread庫的相關(guān)函數(shù)說明

    關(guān)于C語言多線程pthread庫的相關(guān)函數(shù)說明

    下面小編就為大家?guī)硪黄P(guān)于C語言多線程pthread庫的相關(guān)函數(shù)說明。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C語言二維數(shù)組幾種常用的表示方法

    C語言二維數(shù)組幾種常用的表示方法

    今天小編就為大家分享一篇關(guān)于C語言二維數(shù)組幾種常用的表示方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • C/C++中異常處理詳解及其作用介紹

    C/C++中異常處理詳解及其作用介紹

    這篇文章主要介紹了C/C++中異常處理詳解及其作用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論