python将30个人员随机到一个列表中,随机100次,保证30个人每个人至少在列表中出现三次,而且每个人相隔不能太近
时间: 2024-02-20 12:00:03 浏览: 35
这个问题可以使用随机算法来解决。具体步骤如下:
1. 首先创建一个长度为100的列表,用来存放随机生成的30个人员。
2. 随机生成30个人员,将它们分别放入列表中的不同位置。为了保证每个人至少出现3次,可以先将每个人随机放置3次。
3. 对于剩余的70次随机,每次生成一个随机数,表示要放置的人员在列表中的位置。如果这个位置已经被占用了,就重新生成一个随机数,直到找到一个空闲位置为止。
4. 为了保证每个人相隔不能太近,可以在放置每个人时,检查前面已经放置的人员的位置。如果有人员距离当前位置太近(比如相邻或者相隔很近),就重新生成一个随机数,直到找到一个合适的位置为止。
下面是一个示例代码,可以参考一下:
```python
import random
def random_people():
# 随机生成30个人员,每个人至少出现3次
people = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
random.shuffle(people)
people = people * 3
# 创建一个长度为100的列表
result = [None] * 100
# 随机放置每个人员,保证每个人至少出现3次,且相隔不能太近
for p in people:
while True:
pos = random.randint(0, 99)
if result[pos] is None:
if pos < 2 or result[pos - 1] != p and result[pos - 2] != p:
result[pos] = p
break
elif pos < 98 and result[pos + 1] != p and result[pos + 2] != p:
result[pos] = p
break
return result
# 测试随机生成的结果
for i in range(10):
result = random_people()
print(result)
```
这个代码会生成10个随机列表,每个列表中包含30个人员,每个人员至少出现3次,且相隔不能太近。你可以根据自己的需要调整参数,比如人员名单、要求出现的次数、列表长度等。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)