一个数组里面是0到100排序的,如何把它变成随机排序的,并且生成一个新数组
时间: 2024-04-30 14:22:26 浏览: 74
可以使用洗牌算法(Fisher–Yates shuffle)将数组随机排序。具体步骤如下:
1. 从数组的最后一个元素开始,向前遍历数组。
2. 对于当前遍历到的元素,随机生成一个小于等于它的下标。
3. 将当前遍历到的元素与随机生成的下标对应的元素交换位置。
4. 继续向前遍历数组,重复步骤2和3,直到数组的第一个元素。
下面是一个示例代码:
```python
import random
# 生成0到100的有序数组
arr = list(range(101))
# 洗牌算法随机排序数组
n = len(arr)
for i in range(n-1, 0, -1):
j = random.randint(0, i)
arr[i], arr[j] = arr[j], arr[i]
# 打印随机排序后的数组
print(arr)
```
输出示例:
```
[76, 2, 51, 90, 69, 82, 35, 88, 31, 91, 45, 66, 6, 92, 40, 17, 54, 77, 16, 28, 56, 70, 25, 47, 83, 3, 55, 11, 85, 44, 57, 73, 27, 75, 50, 89, 87, 99, 18, 98, 19, 22, 43, 68, 64, 96, 72, 58, 21, 62, 1, 84, 60, 39, 29, 46, 15, 8, 37, 71, 13, 95, 78, 12, 42, 23, 79, 94, 80, 10, 48, 65, 7, 30, 61, 52, 36, 97, 4, 26, 24, 74, 0, 34, 41, 86, 49, 5, 9, 67, 63, 53, 20, 14, 32, 93, 38, 81, 33, 59]
```
可以看到,生成了一个随机排序的数组。如果需要生成一个新的数组,可以使用切片或者列表推导式:
```python
# 使用切片生成新的随机数组
new_arr = arr[:]
print(new_arr)
# 使用列表推导式生成新的随机数组
new_arr = [i for i in arr]
print(new_arr)
```
阅读全文