我使用以下Groovy
代码从列表中选择随机元素。
Random rnd = new Random()
log.info("Random element:" + list[rnd.nextInt(list.size)])
在大多数情况下,我将上一个或下一个元素作为“随机”值。
播种的例子。
在过去,我发现在生成随机数时,它们并不是“足够随机”,我尝试了一些不同的方法使它更随机。
EG
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();
试试这个
def <T> T getRandomElement(List<T> list) {
if (list) {
Collections.shuffle(list)
list.first()
}
}
请注意,Collections.shuffle
会改变列表。如果在其他地方有对列表的引用,这可能很重要。