python 一个随机数字(比如800)如何随机放入一个长度为60的数组

题目来源及自己的思路

给出一个数字
比如有苹果800个,现在有学生60人,现在随机分配苹果到60人手上,

相要的结果

结果一:有可能会是1号学生分到的是10个,2号分到的是4个。。。每个人都可以分到

另一种相要的结果

结果二:有可能会是1号学生分到的是10个,2号分到的是4个,3号分到是0个。。。 这里不一定没个人都分到,但是大部分的人可分到

阅读 2.4k
1 个回答
import random


def assign_apple(apple_num=800, student_num=60, both_have=False):
    '''使用分割法随机'''
    if both_have:
        start, end  = 1, apple_num
    else:
        start, end = 0, apple_num + 1
    seeds = list(range(start, end))
    # 随机分割位置
    idx = []
    for _ in range(student_num - 1):
        i = random.choices(seeds)[0]
        idx.append(i)
        if both_have:
            seeds.remove(i)
    # 填充边界并计算分配数组
    idx.sort()
    idx = [0] + idx + [apple_num]
    rst = [idx[j+1]-idx[j] for j in range(len(idx)-1)]

    return rst
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题