我正在使用Java创建一个战舰游戏,我无法生成2个随机数字,随机选择战舰板上的一个地方。例如,计算机必须随机选择板上的空间来放置船只(以后再拍摄)。
我创建了一个2D数组:
int rows = 10;
int cols = 10;
char [][] grid;
grid = new char[rows][cols];
然后尝试了几种不同的方法来获取数组中的两个随机数,但我无法让它工作。这是我尝试过的一个例子:
int randomPos = (char) (Math.random() * (grid[rows][cols] + 1));
如果没有意义,请问我一些问题。
肖恩
答案 0 :(得分:1)
Math.random()
生成一个十进制数。方括号3.5779789689689...
(或者你指的是什么)没有任何意义,所以使用Math.floor()
方法,将内部数字四舍五入到最接近的整数。正如@Sanjay解释的那样,分别生成数字......
int row = (int) Math.floor(Math.random() * rows);
int col = (int) Math.floor(Math.random() * cols);
现在你有了可以使用的实际整数。
答案 1 :(得分:0)
分别生成两个随机数,并使用它们为您的电路板编制索引。详细说明:
x = random(max_rows)
y = random(max_cols)
(x, y) -> random location (only if it's not already marked)
在您的情况下,随机数的范围应介于0和9之间(包括两者)。
答案 2 :(得分:0)
int randomRow = Math.random() * grid.length;
int randomColumn = Math.random() * grid[0].length;
我不会使用char作为我的网格类型,但无论数组中的类型如何,上面的代码都可以正常工作。
答案 3 :(得分:0)
试试这个声明这是一个ivar:
Random random = new Random();
//In the method do this:
int randomPos = generator.nextInt(11); //This generates a number between 0 and 10.