如何解决2D阵列项目随机交换
我有一个枚举:
public enum Player
{
X,O,NOBODY
}
我让这个数组随机填充了玩家物品:
Player [size][size] p;
示例矩阵:
[ X,NOBODY,NOBODY ]
[ NOBODY,O ]
[ X,X,NOBODY ]
我想随机将X或O元素与NOBODY元素交换,该怎么做?
示例:
[ NOBODY,X ]
解决方法
一种直接的方法是选择一个随机X / O单元以及一个随机NOBODY单元,然后交换它们的值:
// method inside class containing the array
public void swapValues() {
Random rand = new Random();
int xoPos;
int nobodyPos;
do {
xoPos = rand.nextInt(size*size);
Player p = p[xoPos / size][xoPos % size];
} while (Player.NOBODY.equals(p));
do {
nobodyPos = rand.nextInt(size*size);
Player p = p[nobodyPos / size][nobodyPos % size];
} while (!Player.NOBODY.equals(p));
p[nobodyPos / size][nobodyPos % size] = p[xoPos / size][xoPos % size];
p[xoPos / size][xoPos % size] = Player.NOBODY;
}
此处的策略是生成一个介于0到1之间的单个随机数减去2D板中的单元总数。然后,我们使用整数除法和模数找出单个值对应的2D坐标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。