gpt4 book ai didi

java - Java 中的手动列表改组每次都会产生相同的结果

转载 作者:行者123 更新时间:2023-12-02 08:24:39 25 4
gpt4 key购买 nike

我正在尝试创建一种手动打乱列表的方法。该列表被打乱,但每次都会产生相同的结果。代码示例如下:

package ch11;
import java.util.ArrayList;
import java.util.Arrays;
public class Chapter_11_E07_ShuffleArrayList {

public static void main(String[] args) {

Integer[] array = {1, 2, 3, 4, 5, 6, 7, 8};

ArrayList<Integer> intList = new ArrayList<>(Arrays.asList(array));

System.out.println("Before shuffle: ");
for (Integer x: intList)
System.out.print(x + " ");

shuffle(intList);

System.out.println("\nAfter shuffle: ");
for (Integer x: intList)
System.out.print(x + " ");

}

public static void shuffle(ArrayList<Integer> intList) {
// Simple solution
// java.util.Collections.shuffle(intList);

// Manual shuffle
for (Integer x: intList) {

int newIndex = (int) Math.random() * intList.size();

Integer temp = intList.get(x);
intList.set(x, intList.get(newIndex));
intList.set(newIndex, temp);
}
}

}

它似乎在某种程度上有效,但是 Math.random * intList.size() 每次都会产生相同的随机索引吗?高度赞赏您的意见!

最佳答案

这是因为

int newIndex = (int) Math.random() * intList.size();

未正确加括号。应该是

int newIndex = (int)(Math.random() * intList.size());

为了避免这样的简单错误,请新建 Random对象,并调用 nextInt(intList.size())

关于java - Java 中的手动列表改组每次都会产生相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134098/

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