Python五种“随机抽奖”方法

来源 :电脑报 | 被引量 : 0次 | 上传用户:lzx6963817
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  “随机抽奖”例题:假设要从10000个人中随机抽取出10人作为“中奖者”,每人对应一个0-9999中的整数,要求使用Python编程按从小到大的顺序输出中奖者数字代号。类似的“随机抽奖”程序一般均需要先导入random(随机)模块,然后借助其中的randint()、shuffle()和sample()等函数进行随机数的选取,最后使用列表或集合对数据进行存储、排序和输出。

法1:randint()生成随机整数后进行in成员运算判断


  首先,通过“import random”导入random模块(下同);接着,建立空列表“my_list1 = []”;建立while循环结构,判断条件为“len(my_list1) <= 10”,即列表my_list1中元素的个数达到10为止(通过len()检测列表的长度);在循环体中,第一条语句为“x = random.randint(0,9999)”,变量x取值为0-9999中的随机某个整数(包括0和9999);条件判断语句“if x not in my_list1”的作用是,查看生成的随机数x是否在列表my_list1中,防止多次生成的随机数中有重复值出现;如果不重复,则使用append()方法将x追加到列表my_list1中:“my_list1.append(x)”;当循环结束时,列表my_list1中就会保存有10个0-9999间的不重复数据。最后,通过sorted()函数对列表my_list1进行默认参数排序(升序):“my_list2 = sorted(my_list1)”,得到的列表my_list2就是从小到大顺序中奖号码,再使用print()输出结果即可。
  运行程序,得到了10个“中奖”号码(如图1)。


法2:randint()生成随机整数后存入集合“去重”


  与法1类似,只不过是使用集合而非列表来存储生成的随机数:“my_set = set()”,建立一个空集合;接着,仍然是在while循环中,通过randint生成0-9999间的某随机数,将它追加到集合my_set中。由于集合中的元素是不可能存在重复数据的,因此不必像法1中的列表元素进行in成员运算判断,相当于直接进行了“去重”操作。循环结束后,仍然是使用sorted()函数进行排序并保存至列表my_list中,进行print打印输出(如图2)。


法3:shuffle()随机排序后进行“切片”


  首先建立列表my_list1,其值为“list(range(10000))”,通过list()将0至9999共10000个数据保存至列表my_list1中;接着使用random中的shuffle(),将列表my_list1中的数据进行随机排序:“random.shuffle(my_list1)”;然后对列表my_list1进行切片操作,任意截取出10个数据,比如“my_list1[:10]”是指从索引的第0个切至第9个(当然也可以使用“my_list2 = my_list1[99:109]”,意思是从第99个切至第109个),将它们存入列表my_list2中;仍然是使用sorted()函数进行排序并保存至第3个列表my_list3中,进行print打印输出(如图3)。


法4:sample()随机多个“取样”


  Random中的sample()功能是从序列中随机多个“取样”。首先建立列表my_list1,其值为从0-9999中随机抽取10个不重复的数据:“my_list1 = random.sample(range(10000),10)”;然后就可以使用sorted()函数进行排序,将结果保存至列表my_list2中,最后进行print打印输出(如图4)。


法5:numpy中的random.choice()随机项提取


  numpy中有个random.choice(),可以随机从指定列表中提取若干个元素。首先,通过“import numpy as np”导入numpy;接着建立列表my_list1,存储的数据是0-9999共10000个数据:“my_list1 = list(range(10000))”;建立列表my_list2,值为从列表my_list1中随机提取10个不重复的数据:“my_list2 = np.random.choice(my_list1,10,replace=False)”,其中的参数“replace=False”即为控制随机数“不重复”。最后,使用sorted()函数进行排序并保存至第3个列表my_list3中,进行print打印输出即可(如图5)。



  小结:抽奖就是获取不重复的随机数的问题,要解决这个问题Python有多种函数和算法可以選择,体会其中的区别后你可以合理运用在其他实际应用中。
其他文献
在Win10系统的任务栏中会有一些快捷图标,用户通过它们可以快速启动需要的软件和功能。当然用户也可以自行添加新的快捷方式,但是这样的话就会占用大量的任务栏空间。其实可以将这些快捷方式进行有效的分组,从而方便用户更好地进行管理操作,并且使得系统桌面和任务栏都变得干净有序。创建需要的软件分组  先通过自己常用的网页浏览器,打开TaskbarGroups 这款小工具的官方网站(https://githu
期刊
有人说,在当代互联网冲浪,知道如何下载软件是必须要学会的一项技能。虽然当今各系统的软件生态相比十年前已经丰满了很多,但“软件下载难”的情况时有发生,包括一些科技数码领域的工作者也逃不过。  前阵子,本部门新来的实习生称自己在下载某款国外软件时遇到了麻烦,首先在应用商店查找无果,而后去官网找,由于上网能力受限甚至没能进入真正的官网,最后通过某度搜索打算从第三方网站下载,在搜索引擎罗列出的诸多下载地址
期刊
摘要:目的 探讨橄榄油、芦荟胶配合红外线光浴治疗Ⅱ~ Ⅲ期老年性压疮的效果。方法 将80例压疮病人设为观察组、对照组各40例,对照组采用常规的压疮治疗护理方法;观察组采用橄榄油、芦荟胶配合红外线光浴治疗,观察两组疗效。结果 观察组总有效率明显高于对照组,痊愈时间明显短于对照组,两组比较均有统计学意义(P 0.05),具有可比性。  1.2 方法  1.2.1对照组 行常规治疗和护理,每 1~2
期刊
摘要:目的:观察乌司他丁、蛋白、速尿联合应用对SlRS所致肺损伤疗效。方法:选取2012年8月至2014年8月我院ICU收治的80例SIRS所致肺损患者作为研究对象,按照数字法分为对照组和观察组,各40例,对照组接受常规治疗,观察组在此基础上接受乌司他丁、蛋白、速尿联合治疗,对比两组患者的治疗效果。结果:观察组APACHE II评分显著高于对照组,其治疗后患者的MODS、ARDS发生率及预后情况均
期刊
我们一直强调良性的市场需要充分的竞争,比如在游戏本市场,联想的拯救者系列虽然非常强势,但机械革命的深海泰坦和钛钽Plus系列、华硕ROG系列也不弱,另外还有一个长期与拯救者“近身缠斗”的国际品牌系列,那就是惠普的暗影精灵。而在RTX30显卡这一波,惠普目前的主力产品是暗影精灵6 Pro系列。  大家已知道,目前的暗影精灵6 Pro在显卡功率释放上不及拯救者R7000P 2021及R9000P/K,
期刊
佳能放大招,眼控对焦“挤”出来?  2021年4月14日,佳能公布了EOS R3全畫幅专业微单的研发计划,同时正式发布了RF100mm F2.8L MACRO IS USM、RF400mm F2.8L IS USM、RF600mm F4L IS USM三枚镜头。2021年的微单市场,旗舰级产品的搏杀进入白热化。从公布的内容来看,佳能EOS R3是一台性能强大,拥有高速度、高感光度、高稳定性的“三高
期刊
这期间买游戏本,对于预算足够的RTX 30系玩家来说,的确有些恼火,在新品不多的情况下还因蔓延全球的“芯片荒”导致中高端游戏本缺货严重,以至于这段时间大家经常讨论的购机问题竟然是“抢购”“加价”等等词语,消费体验一言难尽。  不过对于五六千元入门级的游戏本用户而言,其实不用当等等党。以前牛叔就聊过什么时候买笔记本最划算,除了首发上市、6·18大促销等典型的降价优惠活动之外,还有一个时期也不失为买本
期刊
沒有显卡怎么办?一名国外的矿工UP主突发奇想,将具有三十多年历史的任天堂 Game Boy 游戏机进行魔改,利用树莓派Pico微处理器和连接线连接到运行比特币节点的计算机上。虽然效率惨不忍睹,但它确实可以实现挖矿,只是需要足够的耐心。你准备好游戏机了吗?
期刊
4月20日,IBM发布了2021财年第一季度财报。财报显示,IBM第一季度营收为177.3亿美元,与去年同期的175.71亿美元相比增长1%,超过分析师平均预期的173.5亿美元。IBM第一季度净利润为9.55亿美元,比去年同期的11.75亿美元下降19%;每股收益为1.06美元,比去年同期的1.31美元下降19%。这两个数字都高于市场预期。  IBM负责管理服务、外包和支持的全球技术服务部门贡献
期刊
摘要:目的 用中药保留灌肠治疗慢性腹泻。方法 药物对局部病变作用直接,疗效迅速,安全有效,副作用少,对止痛止泻有一定的作用,又避免了对胃肠道的刺激,从而使其充分吸收,达到治疗目的。结果 这是一种中药特色护理疗法,治疗时间稍长,但疗效显著  关键词:中药;保留灌肠;慢性腹泻  腹泻又称“泄泻”,为临床常见的胃肠道疾病,一年四季均可发生。以夏秋季尤为多见,其症状以排便次数增多,粪便稀薄,甚至如水样为特
期刊