我需要生成范围内的随机实数[-0.5, 0.5],包括两个边界。
我发现了产生相似范围的各种方法,例如
-0.5 + Math.random()
Run Code Online (Sandbox Code Playgroud)
但是上限始终是排他性的,我也需要包含性。0.5必须在范围内。
实现此目的的一种方法是创建int-500至500的随机数,然后将其除以1000。
int max = 500;
int min = -500;
int randomInt = rand.nextInt((max - min) + 1) + min;
float randomNum = randomInt / 1000.00f;
System.out.println(randomNum);
Run Code Online (Sandbox Code Playgroud)
您可以通过在整数边界和除数中添加和删除零来更改精度。(例如:创建从-5到+5的整数,然后除以10以降低精度)
该解决方案的缺点是它不使用浮点/双精度数据类型提供的最大精度。
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |