用math.random创建一个十分之一的数字

lf5gs5x2  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(369)

我需要用随机数填充一个数组,但数字只能放在十分之一的地方。有没有一种方法可以用数学来做到这一点?这是我为我的孩子准备的 Math.random :

double[] array = new double[size];
for (int i = 0; i < array.length; i++) {
    double num = ((Math.random() * 10000.0) + 0.0);
    array[i] = num;
}
return array;
mbskvtky

mbskvtky1#

如果你想要一个小数位的随机数,你可以用

int size = 20;
double[] array = new double[size];
Random rand = new Random();
for (int i = 0; i < size; i++)
    array[i] = rand.nextInt(10_000 * 10) / 10.0;
System.out.println(Arrays.toString(array));

印刷品
[8773.3, 6305.2, 2758.4, 7872.7, 4648.9, 3565.2, 9546.4, 7533.1, 2369.7, 3218.0, 9960.2, 7418.0, 8149.3, 8813.4, 638.5, 8178.9, 2831.2, 4758.7, 8238.2, 6409.1]
注:while double 如果出现表示错误,则写入double.tostring()以显示具有该表示形式的最短小数点,这样您就不会看到任何错误(对于一个小数点位,您也不会看到至少100万亿的数字)
注2:这就是为什么你必须 (x * N) / (double) N 因为它可以避免累积的错误。e、 如果你这样做了

double y = x * 0.1

double y = x / 10.0;

这并不总是产生相同的结果。这是因为 0.1 不能准确地表示,当您在操作中使用它时,会造成此错误。如果你使用 10.0 ,它可以无错误地表示,因此结果中的错误将足够小,以便在调用 Double.toString() 你会得到预期的结果。

相关问题