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(); }