数组在将数字随机生成到数组的过程中从内存中输出随机数

时间:2018-10-30 13:23:10

标签: c++ arrays

#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

1 个答案:

答案 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,则可能会冒一个很长的循环。