Спасибо, ребята.Вы, ребята, великолепны.Я попробую все ваши предложения, но я нашел решение, которое работает.Вместо того, чтобы удалять элементы из списка, я дал им значение, которым я буду управлять в течение некоторого времени, чтобы вы выбирали только доступные.
Мой код является модификацией проблемы курения (темы исинхронизации).В моем коде у каждого курильщика есть определенное количество сигар, и он может закончить раньше остальных, поэтому агент не должен ставить ингредиенты для него.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
public class RndNumArray {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int totalCount=4, count0=1, count1=1, count2=2;
Random rnd = new Random();
ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(0, 1, 2));
while(totalCount>0){
int rand;
int num;
do{
rand = rnd.nextInt(numbers.size());
num = numbers.get(rand);
} while(num==3);
if (num == 0) {
count0--;
if (ccount0 == 0) {
numbers.set(0,3);
}
}
if (num == 1) {
count1--;
if (count1 == 0) {
numbers.set(1,3);
}
}
if (num == 2) {
count2--;
if (count2 == 0) {
numbers.set(2,3);
}
}
totalCount--;
System.out.println(num);
}
}
}