代码之家  ›  专栏  ›  技术社区  ›  plaidshirt

使用Groovy获得更好的随机值

  •  0
  • plaidshirt  · 技术社区  · 5 年前

    Groovy 从列表中选择随机元素的代码。

    Random rnd = new Random()
    log.info("Random element:" + list[rnd.nextInt(list.size)])
    

    在大多数情况下,我将上一个或下一个元素作为“随机”值。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Chris Adams    5 年前

    在过去,我发现在生成随机数时,它们不够“随机”,我尝试了几种不同的方法使其更随机。

    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();
    
        2
  •  1
  •   Dónal    5 年前

    def <T> T getRandomElement(List<T> list) {
        if (list) {
            Collections.shuffle(list)
            list.first()
        }
    }
    

    请注意 Collections.shuffle 改变列表。如果其他地方有对列表的引用,这可能很重要。