如何随机安排8个人在一个月内出现4次
如何随机安排8个人在一个月内出现4次
本文介绍一种算法,可以随机安排8个人在一个月内出现4次,确保每个人都出现4次,并且不会在同一天出现。
方法:
- 创建一个长度为32(即一个月有31天)的列表,每个元素初始化为0。
- 从1到8依次编号每个人,对于每个人,生成4个随机数,代表他们出现的日期。每次生成随机数时,检查该日期是否已经被其他人选择过,如果是,则重新生成随机数,直到找到一个未被选择的日期。将该日期对应的列表元素加1,表示这一天已经有人出现了。
- 重复步骤2,直到所有人都有4个日期。
- 最后,遍历整个列表,找到出现次数为0的日期,这些日期可以作为该月的休息日。
示例代码:
import random
def arrange_dates(num_people, days_per_person):
dates = [0] * 32 # 初始化日期列表
for person in range(1, num_people + 1):
for _ in range(days_per_person):
while True:
date = random.randint(1, 31)
if dates[date] < person: # 检查日期是否被占用
dates[date] += 1
break
return dates
# 随机安排8个人在一个月内出现4次
dates = arrange_dates(8, 4)
print(dates)
解释:
arrange_dates函数接收两个参数,分别代表人数和每个人出现的次数。dates列表记录每个日期已经被多少个人选择。- 循环遍历每个人,生成他们出现的日期。
while True循环确保每个人的日期都不同。dates[date] < person表示该日期还没有被该人或之前的人选中。
最后,遍历 dates 列表,找到值为0的日期,这些日期就是休息日。
原文地址: https://www.cveoy.top/t/topic/jutJ 著作权归作者所有。请勿转载和采集!