python实现有一个列表有30个数据,随机100次,每次随机从里面取一个数据,然后存到另一个列表,但是要确保每次随机取得值和最近5次的值都不一样
时间: 2024-02-20 14:58:51 浏览: 111
好的,我来给你提供一种实现方式。
首先,我们可以先定义一个包含 30 个数据的列表 `all_data`,一个空列表 `selected_data` 用于存储选中的数据,以及一个变量 `recent_data` 用于记录最近 5 次选中的数据。
接下来,我们可以使用 `random.choice()` 函数从 `all_data` 中随机选取一个数据,并判断其是否与最近 5 次选中的数据都不相同。如果是,则将其加入到 `selected_data` 中,并更新 `recent_data`。
具体实现代码如下:
```python
import random
all_data = [i for i in range(1, 31)]
selected_data = []
recent_data = []
for i in range(100):
# 从 all_data 中随机选择一个数据
data = random.choice(all_data)
# 判断选中的数据是否与最近 5 次选中的数据都不相同
if len(recent_data) < 5 or data not in recent_data:
selected_data.append(data)
recent_data.append(data)
# 最近 5 次选中的数据只保留最后 5 个
if len(recent_data) > 5:
recent_data.pop(0)
else:
# 如果选中的数据与最近 5 次选中的数据有重复,则重新选择
while data in recent_data:
data = random.choice(all_data)
selected_data.append(data)
recent_data.append(data)
if len(recent_data) > 5:
recent_data.pop(0)
print(selected_data)
```
这个程序会输出一个包含 100 个数据的列表 `selected_data`,其中每个数据都满足与最近 5 次选中的数据都不相同的要求。
阅读全文