我正在创建一个方法,如果您传入Random类型的参数,那么它将返回一个随机对象。这基本上就是我想要做的事:从ArrayList中抓取随机对象不是随机的
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'次的例子吗? – 2011-03-06 16:10:57
另外,你是如何构建你的随机数发生器?用Random()或Random(someConstantIntegerValue)'?如果使用后者,请注意每次运行程序时都会得到相同的“随机”序列。 – 2011-03-06 16:14:00
您可以创建一个完整的可运行测试程序吗?看起来你的错误不在你在这里发布的代码之外。 – 2011-03-06 16:17:07