Python|random之随机抽人分组

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

引言

random库让Python语言有了灵魂,random是python函数中非常实用的函数之一,大部分python初学者都会去了解它,但是对它都不怎么刻意学习,其实random库很有内涵,有许多非常实用的东西:

(1)random()返回0<=n<1之间的随机实数n;

(2)choice(seq)则是从序列seq随机返回元素;

(3)getrandbits(n)以长整数形式返回n个随机位;

(4)shuffle(seq)对序列seq进行打乱重新排列;

(5)sample(seq,n)从序列seq中随机返回n个元素;

(6)randrange(x,y,z)x和y代表随机范围,z代表递增量;

(7)randint(n,m)用于随机生成一个指定范围内的整数,范围在n到m之间;

(8)uniform(n.m)用于随机生成一个指定范围内的浮点数,范围同样在n到m之间;

问题描述

针对班级要求,30人里面随机分配4组,每组人数为4人,进行小游戏。

示例:

输入:people=['小明', '小红', '小兰', '小美', '小黄', '小米', '小梦']

输出:第一组:[ '小明', '小兰']

第二组:[ '小美', '小米']

解决方案

算法描述:

面对要求可以知道问题是随机抽人分组,一看随机便要运用random库,再看随机抽人分组,每组人数固定,那么便可以用sample解决,其次既然是抽人分组那么抽过的人就不会再被抽中,就可以把抽到的人选出来进行删除然后进行下一轮的抽人分组。

随机抽人分组问题Python代码

from random import*

people=['一号','二号','三号','四号','五号','六号','七号','八号','九号','十号','十一号','十二号','十三号','十四号','十五号','十六号','十七号','十八号','十九号','二十号','二十一号','二十三号','二十三号','二十四号','二十五号','二十六号','二十七号','二十八号','二十九号','三十号']

ans = sample(people,4)

key='第一组:{0}'.format(ans)  #把随机元素返回进key

for i in ans:

     people.pop(people.index(i)) #遍历ans随机返回的元素并在people中进行删除

print(key)

ans_2 = sample(people,4)

key_2='第二组:{0}'.format(ans_2)

print(key_2)

for j in ans_2:

     people.pop(people.index(j))

ans_3 = sample(people,4)

key_3='第三组:{0}'.format(ans_3)

print(key_3)

for w in ans_3:

     people.pop(people.index(w))

ans_4 = sample(people,4)

key_4='第四组:{0}'.format(ans_4)

print(key_4)

运行实例:

Python|random之随机抽人分组_第1张图片

结语

本篇到此结束,random库里面的函数丰富多彩,它们可以解决生活中的许多问题,不仅仅局限于随机抽人分组,还有抽奖小游戏,猜数字小游戏等等都可以运用random库解决,小编写这篇文章的灵感也源于生活,通过对random函数的理解实际解决问题,相信这篇文章能够解决读者们的一些疑问,如有问题也欢迎各位读者评论,留言,期待你的关注,感谢你的支持。

“我知道”答题挑战

如何运用random函数随机打印得到1-100的2个正整数?

主编:欧洋

稿件来源:深度学习与文旅应用实验室(DLETA)

你可能感兴趣的:(python,random,人工智能,深度学习,数据结构)