给函数输入两个值分别是取值范围以及生成数量,生成随机数组,每个数出现的次数相同。
//mainWindow.h
static QList<int> randomNumber(int maxValue, int numCalls);
QList<int> resultArray;
先在头文件里面声明函数和数组
//mainWindow.cpp
QList<int> MainWindow::randomNumber(int maxValue, int numCalls){
QList<int> initialArray;
for (int i = 0; i < maxValue; ++i)
{
initialArray.append(i);
}
QList<int> fullArray;
for (int i = 0; i < numCalls / maxValue; ++i)
{
fullArray += initialArray;
}
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(fullArray.begin(), fullArray.end(), g);
return fullArray;
}
实际上就是一种洗牌算法。
如果需要在其他地方调用:
QList<int> resultArray = randomNumber(5, 20);
这里输入的5是取值范围:0,1,2,3,4。
这里输入的20是数组长度:数组中有20个数。