嘿伙计们我想要洗牌和整数排列。假设我有这个数组:int [] array = {1,2,3,4,5}; 我想把它洗牌,以便顺序完全随机。例如:int [] array = {3,5,1,4,2};对于java
答案 0 :(得分:2)
不确定您使用的编程语言,但我会用Python回答。
from random import shuffle
alist = [[i] for i in range(5)]
shuffle(alist)
答案 1 :(得分:1)
洗牌的算法非常简单 - 但你需要完全正确,或者随机播放实际上是随机的。
在java中:
for (int i=0;i<arr.length;i++) {
int swap = random.nextInt(arr.length-i) + i;
int temp = arr[swap];
arr[swap] = arr[i];
arr[i]=temp;
}
基本上,您扫描列表中的当前元素,并从列表中随机选择一个元素到列表末尾。
重要的是你只选择前进,否则你不会得到均匀分布。
大多数语言(包括Java)都有内置的随机播放功能。
答案 2 :(得分:0)
我将用Java回答:
int[] a = int[] { 1, 2, 3, 4, 5 }; // example array
int length = a.length(); // for convenience, store the length of the array
Random random1 = new Random(); // use a standard Java random number generator
int swap = 0; // use an extra variable for storing the swap element
int r1 = 0; // for convenience, store the current randomly generated number
for (int i=0; i<length(); i++) { // iterate over each field of the array
r1 = random1.nextInt(length - 1); // generate a random number representing an index within the range of 0 - a.length - 1, i.e. the first and the last index of the array
swap = a[i]; // swap part 1
a[i] = a[r1]; // swap part 2
a[r1] = swap; // swap part 3
}
//根据Java随机生成器
,数组是shuffeld