本文目录导读:

Python
import random # 方法1:使用 random.shuffle(原地打乱) my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] random.shuffle(my_list) print(my_list) # 方法2:使用 random.sample(返回新列表) my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] shuffled_list = random.sample(my_list, len(my_list)) print(shuffled_list)
JavaScript
// 方法1:Fisher-Yates 洗牌算法(推荐)
function shuffle(array) {
const arr = [...array];
for (let i = arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
const myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const shuffledList = shuffle(myList);
console.log(shuffledList);
// 方法2:使用 sort + random(不够均匀,不推荐)
const badShuffle = [...myList].sort(() => Math.random() - 0.5);
Java
import java.util.*;
public class ShuffleExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
Collections.shuffle(list);
System.out.println(list);
// 使用自定义随机种子
Collections.shuffle(list, new Random(42));
}
}
C
using System;
using System.Linq;
using System.Collections.Generic;
class Program {
static void Main() {
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// 方法1:Fisher-Yates 洗牌算法
Random rand = new Random();
for (int i = list.Count - 1; i > 0; i--) {
int j = rand.Next(i + 1);
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
// 方法2:使用 LINQ 和 OrderBy
var shuffled = list.OrderBy(x => Guid.NewGuid()).ToList();
Console.WriteLine(string.Join(", ", list));
}
}
Bash/Linux
# 方法1:使用 shuf 命令
my_list=(1 2 3 4 5 6 7 8 9 10)
shuffled=($(shuf -e "${my_list[@]}"))
echo "${shuffled[@]}"
# 方法2:使用 sort -R(需要 GNU sort)
shuffled=($(printf '%s\n' "${my_list[@]}" | sort -R))
推荐的洗牌算法解释
Fisher-Yates 算法(也称为 Knuth 洗牌)是最推荐的打乱算法:
def fisher_yates_shuffle(arr):
for i in range(len(arr) - 1, 0, -1):
j = random.randint(0, i) # 随机选择 0 到 i 之间的索引
arr[i], arr[j] = arr[j], arr[i] # 交换元素
return arr
算法原理:
- 从最后一个元素开始
- 随机选择当前元素之前(包括自身)的一个位置
- 交换这两个位置的元素
- 向前移动到下一个位置,重复直到第一个元素
优点:
- 时间复杂度 O(n)
- 每次洗牌结果都是等概率的(真正的随机)
- 原地操作,不需要额外空间
注意事项
- 不要使用
arr.sort(() => Math.random() - 0.5):虽然简单,但不会产生均匀分布 - 随机种子:测试时可以使用固定种子确保可重复性
- 线程安全:多线程环境下注意随机数生成器的线程安全
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播