#ifndef REQUESTGENERATOR_H_
#define REQUESTGENERATOR_H_
#include <iomanip>
#include <iostream>
using namespace std;
class requestGenerator {
public:
int randomStar = 0;
int amountOfEvents = 0;
int randomEventArray[10];
int possibleEventArray[15] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
void generator() {
while (randomStar <= 2) {
randomStar = rand() % 5;
}
cout << randomStar << endl;
while (amountOfEvents == 0) {
amountOfEvents = rand() % 10;
}
cout << amountOfEvents << endl;
for (int i = 0; i != amountOfEvents; i++) {
bool numberGened = false;
while (numberGened = false) {
randomEventArray[i] = rand() % 15;
if (possibleEventArray[i] != -1) {
numberGened = true;
possibleEventArray[i] = -1;
}
}
cout << randomEventArray[i] << " ";
}
}
};
#endif /*REQUESTGENERATOR_H_ */
当输出生成的数字时,它给出-858993460九次。我不知道为什么。 “ possibleEventArray”用于保存所有可能的值。虽然生成的数字进入randomEventArray
答案 0 :(得分:3)
由于这个while (numberGened = false)
,您实际上不会填充数组。您缺少第二个等号。如所写,您所做的只是将numberGened
设置为false
,甚至没有进入循环,因为numberGened = false
返回的值是false
。
一些其他未经请求的评论:
while (randomStar <= 2) {
randomStar = rand() % 5;
}
如果要生成3到5之间的随机数,则可以使用randomStart = 3 + rand() % 3
进行此操作,而不是while循环。
此for (int i = 0; i != amountOfEvents; i++)
应该确实是i < amountOfEvents
,否则如果在超出amountOfEvents
的地方修改i,则可能会冒一个很长的循环。