У меня проблема с большой домашней работой, и ни одна из моих попыток решить небольшую часть работы не работает. Проект - игра жизни, поэтому на каждом этапе организм в клетке должен учитывать каждую из окружающих его клеток. Диагонали не используются, и я хочу начать рассмотрение в случайной ячейке.Поиск случайных чисел и рисунка из них
Я подошел к нему несколькими способами, но я оттачивал это как лучшее.
Часть первая - найдите случайные x и y, которые являются стороной, а не диагональю. Я решил, что быть абс абс (x) и abs (y) не может быть одинаковым. Я перебираю случайные попытки до тех пор, пока abs() s не будут разными.
Часть вторая - используйте четыре, если(), чтобы определить текущую сторону, а затем измените x, y на следующую сторону (по часовой стрелке).
Мои результаты состоят в том, что цикл останавливается в нечетных местах и никогда не отличается абс(). Я подозреваю, что выражение while() неверно. Я пробовал abs (x) .equals (abs (y)), но обнаружил, что метод не работает на примитивах. Поэтому я попробовал abs (x)! = Abs (y), но это приводит к нечетным результатам.
Вот текущие усилия. Любая помощь будет оценена по достоинству.
public static void main(String[] args) {
//jkbeg
System.out.println("objective in this section is" +
" to get a random side and then move clockwise around to others");
int targetx; //these will hold the next cell to use.
int targety;
// Part One - get random side to be starting cell
// n.b. abs(x) == abs(y) means diagnol cell, not a side
// first get randoms of 0 or 1 into targets.
// keep trying randoms until abs() are not equal
do {
targetx = (int) (Math.round(Math.random()));
targety = (int) (Math.round(Math.random()));
System.out.println("rando, not checked yet"+targetx +","+targety);
System.out.println("abs x "+Math.abs(targetx));
System.out.println("abs y "+Math.abs(targetx));
}while(Math.abs(targetx) == (Math.abs(targety)) );
System.out.println("after check for sides, not corners"+targetx +","+targety);
//Part two - walk around the sides clockwise
System.out.println("random start cell: "+targetx +","+targety);
for(int targetCounter=0; targetCounter<4; targetCounter++){
if ((targetx==1)&&(targety==0)){targetx=0;targety=1;} //top to right
if ((targetx==0)&&(targety==1)){targetx=-1;targety=0;} //right to bottom
if ((targetx==-1)&&(targety==0)){targetx=0;targety=-1;} //bottom to left
if ((targetx==0)&&(targety==-1)){targetx=1;targety=0;} //left to top
System.out.println("next cell clockwise: "+targetx +","+targety);
}
System.out.println("end *random side then walk around* here here");
System.exit(0);
} // main
//jkend
Вы знаете, что Math.random() возвращает double между 0 и 1? Возможно, попробуйте java.util.Random.nextInt()? – keuleJ