【发布时间】:2013-02-19 23:05:57
【问题描述】:
这是我用来生成一组随机数字的代码:
...
public boolean placeTreasure() {
randomGen = new Random();
int[] treasureLoc = {0, 0};
while (treasureLoc[0] < 2 || treasureLoc[1] < 2) {
treasureLoc[0] = randomGen.nextInt(rows - 2);
treasureLoc[1] = randomGen.nextInt(columns - 2);
System.out.println("" + treasureLoc[0] + ", " + treasureLoc[1]);
}
maze[treasureLoc[0]][treasureLoc[1]] = '*';
return true;
}
...
有趣的是,它在早期版本的 Android 上运行良好。据我所知,4.1 以上的任何东西都不能正常运行。它不断地给我一对0, 0。这让我相信 4.1+ 不支持随机类,或者我的实现发生了其他奇怪的事情。不过,这种方法在早期版本上工作得很好,所以我不确定发生了什么。
如果有人对此的替代实现有建议(我需要在2 和rows 或columns 之间生成随机整数)。
【问题讨论】:
-
这段代码调用时行和列的值是多少?你把它们打印出来确定吗?为什么要在方法内部重新创建一个 Random 对象,而不是简单地创建一次?为什么要有while循环?为什么不简单地获取
randomGen.nextInt(rows - 2) + 2并类似地获取其他号码? -
你不想给每个都添加
2,而不是进入一个循环重试直到找到0和rows-2之间的随机数? -
@HovercraftFullOfEels 行和列可以是任何东西。是的,我正在打印它们以确保。我不是在重新创建一个 Random 对象,我只这样做一次。好主意。但这仍然不能解决 Random 类不起作用的问题。