上代码:
for(int testdata=0; testdata<10000;testdata++)
{
// QRandomGenerator *tempgen=new QRandomGenerator();
// double tempvalue= 30.0+ tempgen->bounded(200.0);
double tempvalue =QRandomGenerator::global()->generateDouble();
tempvalue *=200;
qDebug()<< "tempvalue generate: " << tempvalue;
s_Fbdata.shake_array.push_back(static_cast<double>(tempvalue));
//delete tempgen;
}
发现的问题是:
如果使用 tempgen->bounded(200.0) 的这种方式,则生成的全部是一个值!!!这是不符合要求的,原因未详;
使用 QRandomGenerator::global()->generateDouble(); 后,则每一个值都是随机数!!这种方法使用正确!!
本案例是批量生成0—200以内的double随机数。
最后,整理一下正确的用法:
for(int testdata=0; testdata<10000;testdata++)
{
double tempvalue =QRandomGenerator::global()->generateDouble();
tempvalue *=200;
s_Fbdata.shake_array.push_back(static_cast<double>(tempvalue));
}
目的:生成范围在0--200的double数,长度为10000个。
double 生成的位数太长,保留2位小数:
for(int testdata=0; testdata<10000;testdata++)
{
double tempvalue =QRandomGenerator::global()->generateDouble();
tempvalue *=200;
QString str = QString::number(tempvalue, 'f', 2);
tempvalue= str.toDouble();
// qDebug()<< "tempvalue generate: " << tempvalue;
s_Fbdata.shake_array.push_back(static_cast<double>(tempvalue));
}