生成随机数的队列

时间:2015-03-10 14:41:27

标签: c++ random queue

出于好奇,有人如何创建随机数的队列?

我的当前项目中有一个类似的构造函数:

public:

Passenger<NODETYPE> *super_express;
Passenger<NODETYPE> *express_line1;
Passenger<NODETYPE> *express_line2;
Passenger<NODETYPE> *regular_line;

Checkout_Simulation() : super_express("Super Express Counter 01"),
                            express_line1("Express Line Counter 01"),
                            express_line2("Express Line Counter 02"),
                            regular_line("Regular Line Counter 01"),
                            clock_time(0), finish_time(0) {}

如何使用随机生成的数字创建随机数的regular_line队列?换句话说,随机发生器输出为5,它将产生5个regular_lines?

这是他们运行的地方:

template <typename NODETYPE>
void Checkout_Simulation<NODETYPE> :: run_sim() {

    for(clock_time = 0; clock_time <total_time; clock_time++){
            item_obj.item_purchase(number);

    if (number < 15) {
      super_express.check_new_arrival(clock_time, display_all);
    // number = the value
      super_express.number = number;
    }
    else if (number >15 && number <=20){

      express_line1.check_new_arrival(clock_time, display_all);
      express_line2.check_new_arrival(clock_time, display_all);
    }
    else {
      regular_line.check_new_arrival(clock_time, display_all);
    }



    if (clock_time >= finish_time){
            start_checkout();
      }

    }//end for loop
}

1 个答案:

答案 0 :(得分:0)

要创建具有随机数量Passenger<NODETYPE>的std :: vector,请执行以下操作:

首先,您将生成一个随机数 接下来,使用循环到随机数的限制。

srand(time(0); // Seed the random number generator.
const unsigned int quantity = rand() % 16 + 1;  
std::vector<Passenger<NODETYPE> *> regular_line_queues;
for (unsigned int i = 0; i < quantity; ++i)
{
  regular_line_queues.push_back(new Passenger<NODETYPE>);
}

使用唯一指针或智能指针留给读者练习。

编辑1:
对于实际的队列,请将std::vector替换为std::deque