首页 > 解决方案 > 它是如何工作的?洗牌阵列

问题描述

我想了解java中的洗牌数组。我明白它是如何工作的

for(int i=myList.length-1; i>0; i--) {
        int j = (int) (Math.random() * i +1);
        double temp = myList[i];
        myList[i]=myList[j];
        myList[j]=temp;
        System.out.print(myList[i]);

但我对这部分很困惑

int j = (int) (Math.random() * i +1);

它可以为 ex 创建相同的数字:

122512111

那么如果它具有相同的数字,它是如何工作和交换索引的。

标签: javaarrays

解决方案


你的代码很好,不用担心。

在这里,我尝试int j = (int) (Math.random() * i +1);单独向您解释:

  1. Math.random()float:-> 为您提供0 到 1 之间的随机数。

  2. Math.random() * i:-> 乘以i(index)所以数字不要停留在范围0 to 1和范围之间0 to myList.length-2

  3. (Math.random() * i +1):-> 将我们的随机数加 1,因此范围将变为0 to myList.length-1

  4. (int) (Math.random() * i +1);:-> 将我们的号码从 转换floatint

**以上所有范围都包括开始和结束号码:)


推荐阅读