在将数字随机生成为数组期间从内存输出随机数的数组

Array outputting random numbers from memory during random generation of numbers into an array

本文关键字:数组 内存 输出 随机数 随机 数字      更新时间:2023-10-16
#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 时

由于这个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,就有可能出现一个非常长的循环。