Gia*_* F. 2 java algorithm time
在我正在工作的项目中,我需要生成n个随机double数(取决于输入文件的内容)或者doubles如果我从输入文件中将它们转换为它们.逗号后面的这些数字应该只有2位小数(例如:)0.98.
我知道在Java 8中,有两种方法可以做到这一点:
nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(ThreadLocalRandom.current().nextDouble(0,1)).replace(",","."));nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(new Random().nextDouble()).replace(",", "."));渐渐地说,哪个是最快的?根据我对ADS的不了解,我会说它会是同一时间(O(n)?),但我并不是百分百肯定
除了这两种方式外,还有什么其他的方法来生成随机doubles之间0以及1它们更快,渐进地说,比我的建议?(相反,是否有方法可以做任何事情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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |