gpt4 book ai didi

java - 在java中生成随机双数的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:39 26 4
gpt4 key购买 nike

在我工作的项目中,我需要生成 n 个随机 double 数字(取决于输入文件的内容)或将它们转换为 double 如果我的输入文件中有它们。这些数字在逗号后应该只有 2 位小数(例如:0.98)。

我知道在 Java 8 中,有两种方法可以做到这一点:

  1. Java 8 方式:nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(ThreadLocalRandom.current().nextDouble(0,1)).replace(",","."));
  2. 老办法:nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(new Random().nextDouble()).replace(",", ".")) ;

渐近来说,哪个最快?根据我对 A.D.S. 的了解,我会说这将是同一时间 (O(n)?) 但我不是 100% 确定

除了这两种方法之外,是否还有其他方法可以在 01 之间生成随机 double,渐近地讲,这些方法更快,比我的建议? (更确切地说,是否有方法可以在 O(n)O(1) 中完成所有事情?)

提前感谢所有愿意花一分钟时间回答我这个问题的人

最佳答案

您的两种方法都使用字符串作为中间表示,这将非常低效(内存分配、字符串解析、字符串格式化都是相对较慢的操作。您可能还想避免分配多个 Random 实例。

鉴于您只需要两位小数,为什么不创建一个 0..99 范围内的整数并将其除以 100.0?

Random random = new Random();  // Only one instance needed.
for (int n = 0; n < total; n++) {
double nthRandomNumber = random.nextInt(100) / 100.0;
}

关于java - 在java中生成随机双数的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com