我使用以下Groovy
代码从列表中选择随机元素。
Random rnd = new Random()
log.info("Random element:" + list[rnd.nextInt(list.size)])
在大多数情况下,我将上一个或下一个元素作为“随机”值。
答案 0 :(得分:1)
尝试一下
def <T> T getRandomElement(List<T> list) {
if (list) {
Collections.shuffle(list)
list.first()
}
}
请注意,Collections.shuffle
对列表进行了突变。如果在其他地方有对列表的引用,这可能很重要。
答案 1 :(得分:1)
带有种子的示例。
过去,我发现生成随机数时,它们还不够“随机”,因此我尝试了几种不同的方法来使其更随机。
例如
Date date = new Date();
def now = date.getTime();
log.info(now); // This value is the number of millis since January 1, 1970
Random rnd = new Random();
rnd.setSeed(now); // Seed the Random with the millis value
def play = randomValue.nextInt(10); // Value in brackets is the max number of interest
log.info(play);
当不在范围内工作并且只需要一个x位数的随机值时,我已经做了类似...
randomValue = new Random();
val1 = randomValue.nextInt(10);
val2 = randomValue.nextInt(10);
val3 = randomValue.nextInt(10);
val4 = randomValue.nextInt(10);
val5 = randomValue.nextInt(10);
orderRef = val1.toString() + val2.toString() + val3.toString()+ val4.toString()+ val5.toString();