在2D数组中生成随机数

时间:2011-07-29 14:05:48

标签: java random multidimensional-array numbers

我正在使用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));

如果没有意义,请问我一些问题。

肖恩

4 个答案:

答案 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.