找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 389|回复: 6

[求助] 【求助】随机数多次选取问题

1

主题

1

帖子

1

积分

贫民

积分
1
stc113 发表于 2021-4-21 10:02:53 | 显示全部楼层 |阅读模式
【问题描述】比如有10个人,第一次随机选取3个人买菜,其他7个人打杂;
第二次买过菜的3个人就不用买了,
从其他的7人里选3个去买菜,其他的7个人打杂;
再下次也是一样,总之上一次买过菜的就不用连续两次买
【目标描述】
最后要打印3个人的名单,安排一周7天的活(共7行,21个名字)。

怎么用python写出来啊。

我只会选取3个人出来,后面的百度来百度去还是没法弄清楚,麻烦大哥们帮下



import random
list = [1,2,3,4,5,6,7,8,9,10]
print(random.sample(list,3))

回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
wx_flfuwL7w 发表于 2021-4-29 00:30:43 | 显示全部楼层
两组list转化成集合,求差集。再用差集取,重复上边步奏。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
一杆钓起满天星 发表于 2021-5-4 17:51:18 | 显示全部楼层
import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def run(list):
    a = random.sample(list, 3)
    print(a)
    for i in a:
        list.remove(i)

    b = random.sample(list, 3)
    print(b)
    for i in b:
        list.remove(i)
    for i in a:
        list.append(i)

    c = random.sample(list,3)
    print(c)
    for i in c:
        list.remove(i)
    for i in b:
        list.append(i)

    d = random.sample(list, 3)
    print(d)
    for i in d:
        list.remove(i)
    for i in c:
        list.append(i)

    e = random.sample(list, 3)
    print(e)
    for i in e:
        list.remove(i)
    for i in d:
        list.append(i)

    f = random.sample(list, 3)
    print(f)
    for i in f:
        list.remove(i)
    for i in e:
        list.append(i)

    g = random.sample(list, 3)
    print(g)
    for i in g:
        list.remove(i)
    for i in f:
        list.append(i)
        
run(list)
回复 支持 反对

使用道具 举报

0

主题

4

帖子

4

积分

贫民

积分
4
user_jin 发表于 2021-5-7 13:10:34 | 显示全部楼层
import random


list2 = []   # list2列表 为 昨天工作的人员
for i in range(1,8):   # 一周
    list1 = [str(i) for i in range(1, 11)]   # 总人员列表,每天重置
    if list2 != []:   # 如果昨天有工作的人员,就在今天的总人员列表中删除掉,排除掉第一天
        for k in list2:
            list1.remove(k)
    list2 = []   # 清空昨天工作的人员列表
    for j in range(3):   # 随机取人
        people = random.choice(list1)
        list2.append(people)   # 抽取出人员后放入工作列表,下一次循环随机取人时会排除今天工作的人 line7
        list1.remove(people)   # 在总人员表中删除此人,防止抽取人员重复
    print("第{}天工作的人为:{}".format(i,list2))
回复 支持 反对

使用道具 举报

1

主题

7

帖子

7

积分

贫民

积分
7
py游戏设计1089 发表于 2021-5-8 17:15:02 | 显示全部楼层
本帖最后由 py游戏设计1089 于 2021-5-8 17:16 编辑

import random
q=9
a=[1,2,3,4,5,6,7,8,9,0]
b=[]
    while True:
    d=0
    while d==3:
        e=a[random.randint(0,q)]
        b.append(e)
        a.remove(e)
        d+=1
    print(a+b)    a=[1,2,3,4,5,6,7,8,9,0]
    b=[]
回复 支持 反对

使用道具 举报

5

主题

15

帖子

15

积分

贫民

积分
15
wx_Z9LTRnIn 发表于 2021-6-5 17:34:13 | 显示全部楼层
直接让第一次买过的人作为一个变量,然后将第一次买过的人的那个变量再从中删除不就行了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
sam.z 发表于 2021-6-9 00:26:31 | 显示全部楼层
import random

DAY = 10
COUNT = 3

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(a)
for i in range(DAY):
    print('星期{}'.format(i % 7+1), end='\t')
    for num in range(COUNT):
        maicai = a.pop(0)
        a.append(maicai)
        print(maicai, end=',')
    print()
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表