random.shuffle(seq)
时间: 2023-10-19 08:07:56 浏览: 30
这是一个 Python 中的函数,其作用是将可迭代对象 seq 中的元素随机打乱顺序。具体来说,它会在原地修改 seq,不会返回新的对象。调用方法如下:
```python
import random
seq = [1, 2, 3, 4, 5]
random.shuffle(seq)
print(seq)
```
输出结果可能类似于:`[2, 5, 3, 1, 4]`,表示原本的顺序被打乱了。注意,如果 seq 中有重复元素,它们的顺序也会被打乱,但仍然会出现在打乱后的序列中。
相关问题
random.shuffle
`random.shuffle`是Python中的一个函数,它接受一个可变序列(如列表)作为输入,并在原地对序列中的元素进行随机重排。它的语法格式如下:
```python
random.shuffle(seq, random=None)
```
其中,`seq`是要进行随机重排的序列,`random`是一个可选参数,用于指定随机数生成器的种子。如果未指定`random`参数,则使用系统时钟作为种子。
以下是一个简单的示例,展示如何使用`random.shuffle`对列表进行随机重排:
```python
import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)
```
输出结果可能是:
```
[5, 1, 2, 4, 3]
```
random.shuffle 原理
`random.shuffle` 函数的原理是通过 Fisher-Yates 洗牌算法(也称为 Knuth 洗牌算法)来实现的。该算法的基本思路是:从序列末尾开始,依次将当前位置的元素与之前的随机位置上的元素交换位置,直到完成整个序列的遍历为止。
具体实现过程如下:
1. 从序列末尾开始,依次取出当前位置 i 上的元素;
2. 生成一个随机数 j,满足 i ≤ j < len(seq);
3. 将当前位置 i 上的元素与位置 j 上的元素交换;
4. 重复 1-3 步,直到完成整个序列的遍历。
该算法的时间复杂度为 O(n),其中 n 是序列的长度。