java - 生成与二维数组中最后一组数字仅相差 1 的数字组

标签 java arrays random 2d

问题:我想在网格上生成接触的随机位置。位置总数为 5。是否有更有效/不同的方法来执行以下代码:

 /*
 * 8        1       2
 * 7    [original]  3
 * 6        5       4
 */


int rand = 1 + (int)(Math.random() * ((8 - 1) + 1));
if(rand >= 2 && rand<= 4)
{
    newx++;
}
else if(rand >=6 && rand<=8)
{
    newx--;
}

//change y according to number
if(rand == 8 || rand == 1 || rand==2)
{
    newy++;
}
else if(rand >= 4 && rand<= 6 )
{
    newy--;
}

最佳答案

根据this Thread switch 语句似乎对您的情况更有效。它还使您的代码更具可读性。

switch (rand){
    case 1:         newy++; break;
    case 2: newx++; newy++; break;
    case 3: newx++;         break;
    case 4: newx++; newy--; break;
    case 5:         newy--; break;
    case 6: newx--; newy--; break;
    case 7: newx--;         break;
    case 8: newx--; newy++; break;
}

关于java - 生成与二维数组中最后一组数字仅相差 1 的数字组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015103/

相关文章:

c++ - 生成 32 位随机数的问题

php从目录生成随机图像

MySQL ORDER BY RAND() LIMIT 和组合

python - 具有停止条件的 numpy 数组中的累积和

java - 如何将 JSON 格式的数据转换为 GraphQL 查询格式

java - 如何使用 HQL INNERJOIN 从多个表中检索记录

java - Tomcat 忽略 post 参数请求

c# - 检查数组是否是多维的

Javascript 将数组连接到字符串

java - 更新 JDialog 时焦点丢失