C++11 隨機數和隨機顏色


1.c++11提供的random實現了隨機數庫,它通過隨機數引擎類(random_number_engines)產生隨機數序列,隨機數分布類(random-number distribution)使用隨機數引擎生成服從特定概率分布的隨機數。

#include <iostream>
#include <random>
std::default_random_engine e;
std::uniform_real_distribution<double> random(0,1);
void SerialPortWidget::slotTest()
{
    qDebug()<<"r:"<<random(e)<<"i:"<<int(random(e)*255);

   //QColor color=QColorDialog::getColor(Qt::red,this,"選擇顏色");
   btnTest->setStyleSheet("background-color:rgb("+QString::number(int(random(e)*255))+","
                           +QString::number(int(random(e)*255))+","
                           +QString::number(int(random(e)*255))+");");
}

 

 

private:
    std::default_random_engine randomEngine;
    std::uniform_real_distribution<double> randomNum;


OperationWidget::OperationWidget(QWidget *parent) : QWidget(parent),
    randomNum(0,1)
{
    this->setMaximumWidth(400);
    initUI();
}

QColor OperationWidget::getRandomColor()
{
    QColor c=QColor(int(randomNum(randomEngine)*255),int(randomNum(randomEngine)*255),
                    int(randomNum(randomEngine)*255));    
    return c;
}

 2.隨機整數

 

private:
    std::default_random_engine randomE;    
    std::uniform_int_distribution<int> randomNum;
void EscBusWidget::randomTestThread()
{

    randomNum=std::uniform_int_distribution<int>(0,100);

    threadRandomTest=std::thread([&](){
        while(isRandomTest){
            qDebug()<<"r:"<<randomNum(randomE);
            for(int i=0;i<randomTime;i++)
            {
                if (!isRandomTest)
                {
                    break;
                }
                std::this_thread::sleep_for(std::chrono::milliseconds(100));
            }

        }

    });
    threadRandomTest.detach();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM