You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Organism类的mate方法中生成[0,n-1]区间的随机整数?

在Java Organism类的mate方法中生成[0, n-1]区间随机整数的最佳实现

推荐实现(Java 7+)

使用ThreadLocalRandom是最优选择,它针对多线程场景做了锁竞争优化,性能优于传统Random类,代码实现直接简洁:

public Organism[] mate(Organism other) {
    // 生成[0, n-1]区间的随机整数
    int crossOver = ThreadLocalRandom.current().nextInt(n);

    // 此处补充交叉繁殖的业务逻辑...

    return new Organism[0];
}

ThreadLocalRandom.current().nextInt(n)会直接返回范围在[0, n-1]的整数,完全匹配需求,无需额外计算。

兼容Java 7以下的方案

如果项目需要兼容Java 7之前的版本,可以使用Random类,但建议在类中声明一个静态实例以避免重复创建对象:

// 在Organism类中添加静态Random实例
private static final Random RANDOM = new Random();

public Organism[] mate(Organism other) {
    int crossOver = RANDOM.nextInt(n);

    // 此处补充交叉繁殖的业务逻辑...

    return new Organism[0];
}

额外注意事项

需要确保n的取值合法:n必须大于0,且与value、goalString的长度一致。可以在构造方法中添加校验逻辑,避免后续生成随机数时抛出异常:

public Organism(String value, String goalString, int n) {
    this.goalString = goalString;
    this.value = value;
    if (n <= 0 || n != value.length() || n != goalString.length()) {
        throw new IllegalArgumentException("n必须为正整数,且与目标字符串、当前字符串长度一致");
    }
    this.n = n;
}

内容的提问来源于stack exchange,提问作者Nick Paree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:10:32