gpt4 book ai didi

java - 查找随机数并从中找出模式

转载 作者:行者123 更新时间:2023-12-01 14:28:27 26 4
gpt4 key购买 nike

我有一个很大的家庭作业问题,但我尝试解决其中一小部分的尝试都不起作用。该项目是一场生命游戏,因此细胞中的有机体在每一步都必须考虑其周围的每个细胞。不使用对角线,我想从随机单元格开始考虑。

我已经采用了多种方法,但我认为这是最好的。

第一个部分 - 找到一个随机的 x 和 y,它们是一条边,而不是一条对角线。我认为作为一边的abs(x) 和abs(y) 不能相同。我循环随机尝试,直到 abs() 不同。

第二部分 - 使用四个 if() 确定当前一侧,然后将 x,y 更改为下一侧(顺时针方向)。

我的结果是循环在奇怪的地方停止,并且绝对不会与abs()不同。我怀疑 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

最佳答案

My results have been that the loop stops at odd places and never with abs()s different. I suspect the while() expression is wrong

System.out.println("abs x "+Math.abs(targetx));
System.out.println("abs y "+Math.abs(targetx));

查看这些行中的变量名称。

第二部分:每个 if 语句都会更改 targetx 和 targety 的值,以便这些值与下一个 if 语句匹配。因此,每条 if 语句都会执行,循环结束时 targetx 和 targety 的值就是最后一条 if 语句中设置的值。

您应该使用 if-else if 结构。即使每个 if 语句中设置的值与下一个 if 语句不匹配,您仍然需要使用 if-else if 结构,因为这样 java 就不必每次通过循环都检查所有 4 个 if 条件。采用if-else if结构,只要有一个if匹配,就跳过其余的。

关于java - 查找随机数并从中找出模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com