【发布时间】:2011-03-06 16:07:04
【问题描述】:
我正在创建一个方法,如果你传入一个随机类型的参数,那么它将返回一个随机对象。这基本上是我想要做的:
public T choose(Random r) {
int randomInt = r.nextInt(randomList.size()); // randomList is just a instance variable
return randomList.get(randomInt);
}
随机列表包含以下字符串:[2, 2, 2, 1, 1, 1, 1, c, c, c, a, a, a, a]
然后我用下面的代码做了一个驱动
for (int i = 0; i < 10; i++) {
System.out.print(rndList.choose(rnd)); // rnd is initialized as a static Random variable
}
但是我的输出并不是随机的。我使用了调试器,发现我的选择方法会生成一个相对较低的整数,因此它总是会打印出 2 或 1,但不会打印出 c 或 a。我不知道为什么会发生这种情况,我们将不胜感激。
编辑:问题已解决。我遗漏了很多细节,但是当我调用 size() 方法时,我重写了它,它有一个错误,返回的数字比我想要的要小。感谢 dtech 注意到我的愚蠢错误。感谢所有试图帮助我的人!
【问题讨论】:
-
你试过运行它
50次吗? -
另外,您是如何构建随机数生成器的?使用
Random()还是Random(someConstantIntegerValue)?如果您使用后者,请注意每次运行程序时都会得到相同的“随机”序列。 -
你能创建一个完整的可运行的测试程序吗?您的错误似乎超出了您在此处发布的代码。
-
当我运行这段代码时,我得到了输出
a1c211a121你得到了什么,你期望得到什么? -
第一个代码示例中的列表名为“randomList”,第二个代码示例中的列表名为“rndList”。只是一个错字?
标签: java list random arraylist