如何在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
相关产品推荐
相关产品推荐

