在2D阵列中生成随机数



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

如果这没有道理,请问我一些问题。

Sean

Math.random()生成一个十进制数。使用平方3.5779789689689...(或你所指的任何东西(没有任何意义,所以使用Math.floor()方法,将内部的数字四舍五入到最接近的整数。正如@Sanjay所解释的,单独生成数字。。。

int row = (int) Math.floor(Math.random() * rows);
int col = (int) Math.floor(Math.random() * cols);

现在,您可以使用实际的整数。

分别生成两个随机数,并使用它们为您的板编制索引。详细说明:

x = random(max_rows)
y = random(max_cols)
(x, y) -> random location (only if it's not already marked)

在您的情况下,随机数的范围应该在0和9之间(包括两者(。

int randomRow = Math.random() * grid.length;
int randomColumn = Math.random() * grid[0].length;

我不会使用char作为我的网格类型,但无论数组中的类型如何,上面的代码都能正常工作。

尝试声明这是一个ivar:

Random random = new Random();
//In the method do this:
int randomPos = generator.nextInt(11); //This generates a number between 0 and 10.

相关内容

  • 没有找到相关文章

最新更新