Чтобы достичь этого, вы должны создать присвоить значение переменной, которая находится в агентах, прежде чем агенты будут подобраны вашим поездом. Создайте переменную с именем например willBeDropped в качестве логического значения со значением по умолчанию false. Эта переменная должна существовать в каждом из ваших 4 типов агентов.
Таким образом, когда агенты подобраны поездом, вам следует присвоить значение true или false для willBeDropped ... Поэтому, когда поезд доберется до данной остановки, у 20% детей будет willBeDropped=true
, а у 80% willBeDropped=false
.
В выпадающем списке вы должны использовать «пока условие истинно», где условие agent.willBeDropped==true
Я не знаю, как вы подбираете пассажиров, поэтому я не знаю, как вам там помочь ... Ваш вопрос не завершен, но вы сами можете понять это, зная, что я только что сказал.
Но если у вас есть следующая конфигурация, в которой все добавляются в поезд один раз:
Вы можете использовать следующий код:
int num1=count(queue,q->q instanceof Children);
int num2=count(queue,q->q instanceof Teenager);
int numToDropOff1=(int)round(num1*0.2);
int numToDropOff2=(int)round(num2*0.4);
int counter1=0;
int counter2=0;
for(int i=0;i<queue.size();i++){
if(counter1<= numToDropOff1 && queue.get(i) instanceof Children){
queue.get(i).willBeDropped=true;
counter1++;
}else if(counter2<= numToDropOff2 && queue.get(i) instanceof Teenager){
queue.get(i).willBeDropped=true;
counter2++;
}
}