Так что я работаю над программой, которая должна случайно помещать людей в 6 комнат (окончательный вход - это список комнат с кем есть в каждой комнате). Поэтому я понял, как это сделать.Как сделать мой сортировщик комнаты более случайным?
//this is the main sorting sequence:
for (int srtM = 0; srtM < Guys.length; srtM++) {
done = false;
People newMove = Guys[srtM]; //Guys is an array of People
while (!done) {
newMove.rndRoom(); //sets random number from 4 to 6
if (newMove.getRoom() == 4 && !room4.isFull()) {
room4.add(newMove); //adds person into the room4 object rList
done = true;
} else if (newMove.getRoom() == 5 && !room5.isFull()) {
room5.add(newMove);
done = true;
} else if (newMove.getRoom() == 6 && !room6.isFull()) {
room6.add(newMove);
done = true;
}
}
Сейчас проблема заключается в том, что код по причинам, я не совсем понимаю (что-то с тем, как я писал здесь) вряд ли случайны. Кажется, что одни и те же люди попадают в одни и те же комнаты почти каждый раз, когда я запускаю программу. Например, меня почти всегда ставят этой программой в комнату 6 вместе с другим другом (интересно, мы оба в конце массива Guys). Итак, как я могу сделать это «по-настоящему» случайным? Или гораздо более случайным, чем сейчас?
Заранее благодарен!
Забыл упомянуть, что «rndRoom()» действительно использует стандартный метод случайного (на 4-6) в фоновом режиме:
public int rndRoom() {
if (this.gender == 'M') {
this.room = (rnd.nextInt((6 - 4) + 1)) + 4;
}
if (this.gender == 'F') {
this.room = (rnd.nextInt(((3 - 1) + 1))) + 1;
}
return this.room;
}
Мы не сможем вам помочь, не видя больше вашего кода. Что делает метод 'rndRoom()' на 'People', например? Почему вы только назначаете людей в комнаты 4, 5 и 6? Что случилось с 1, 2, 3? – guitarsteve
Не могли бы вы отправить метод _rndRoom_? – EJK
Да, конечно - поэтому метод rndRoom просто полагается на стандартное случайное действие nextInt (которое находится внутри класса People). Комнаты 1-3 для девушек, пример кода здесь для комнат 4-6, которые для парней. – RoiB