前言

有道题目这样的:

某次考试,需从题库中抽取一定数量题目,假设题库中共有 1000 道题目,其中单选题 200 道,多选题 120 道,判断题 200 道, 填空题 400 道,简答题 80 道,现在需要随机抽出 25 道题,请给 出较合理的数据抽样方法,并编程实现,要求给出源代码(需有注释),并给出一次抽取结果。

如果这是道数学题就很简单,算一下各个题目占比是多少再乘随机抽出题目的个数25就行

但用python编程实现的话就会发现很多小技巧在里面

先把我的代码放上来

import randomdictsum = {'单选':200, //各个类型题目各有多少道题'多选':120,'判断':200,'填空':400,'简答':800}dict = {'单选':5,        //每个类型题目需要抽出多少道题'多选':3,'判断':5,'填空':10,'简答':2}for name,sum in dictsum.items():   //循环dictsum字典获取信息print(name,':', random.sample(range(1, sum), dict[name]))//不重复的输出五种类型题目

输出结果是这样

思考

首先看下,因为题目背景是要出题

隐含的意思是:题目不能重复

所以这个时候不光要输出五种类型值

还要做到不能重复

我的想法一开始是建立两个数组,但是python里没有数组

还是字典更适合些

于是就建立了对应的字典来存储

dictsum对应所有题库的类型与值

dict对应的需要抽出的类型与值

为了得到题库里每个类型值需要对其进行遍历

所以写出了个for循环

sum对应这dictsum中总数目,即200,120、、、

name则对应dictsum中的题目类型,即单选,多选、、、

插一句
本来还想使用‘单选‘(dict)与’单选和’(dictsum)来区分两者
但是发现这样需要写两个for循环实在太不妥当
所以投机取巧的统一命名

random这个自然不用多少直接随机生成数,别忘记加上头文件

至于为什么使用random.sample()而不使用random.randint()

以下截取了开发者手册中的函数解释

randint更倾向于随机生成数,随机数中可能重复也可能不重复

sample只会进行无重复随机抽样

两个使用方法还是很相近

结论

如果题目只是要求随机产生就用randint

如果要求不能重复就用sample

关于python随机抽取各类型不重复值的思考(sample与randint的区别)相关推荐

  1. python随机抽取人名_python的random

    python的random函数 更多的random用法可参阅: random --- 生成伪随机数 - Python 3.7.4 文档​docs.python.org 以下使用了: 洗牌:random ...

  2. html抽奖不重复,javascript随机抽取0-100之间不重复的10个数

    目前只学会两种简单的方法,帮助大家实现随机抽取0-100之间不重复的10个数,具体内容如下 第一种利用数组长度可改写的特点 思路:可以从0到100的数用for循环出来放在一个数组中,然后将这100个数 ...

  3. python随机抽取人名_python实现艾宾浩斯背单词功能,实现自动提取单词、邮件发送,再也不用担心背单词啦...

    已经完成了利用python爬虫实现定时QQ邮箱推送英文文章,辅助学习英语的项目,索性就一口气利用python多做一些自动化辅助英语学习的项目,对自己的编程能力和英文水评也有一定的帮助,于是在两天的努 ...

  4. 从数组随机抽取5个不重复_Power Query 如何保证随机抽取元素不重复

    继续昨天的话题,昨天我们实现完全的随抽取列表元素,有一个问题就是可能几次会抽取同一个位置的元素: 1-50中随机抽取5个数值,点击刷新,就会出现不同的结果,如上图可能会出现两个相同的数值,如何确保每次 ...

  5. java随机抽取_java 随机抽取案例,不重复抽取

    以学生类为例,先准备一个Student类 package cn.sasa.demo1; public class Student { private int id; private String na ...

  6. python随机抽取5张扑克牌,判断是否为顺子

    废话不多说,直接上代码,都有注释: """ 编程语言:python 3.6 系统环境:window10 如果A设置为1,J=11, Q=12, K=13, 大小王设置为0 ...

  7. python函数定义参数类型和返回值类型

    python中我们也可以定义函数的参数类型和返回值类型,如下代码 #函数参数和返回值的类型声明,python函数类型的声明,更加有意义,更加实用一些 def add(a,b):''':param a: ...

  8. python excel处理重复行并统计个数_懂Excel就能轻松入门Python数据分析包pandas(五):重复值处理...

    经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器-- pandas 前言 有时候数据中出 ...

  9. Python中的布尔类型以及布尔值介绍

    什么是布尔类型? 布尔类型是一种逻辑类型,它只有两个取值:True(真)和False(假).在Python中,True和False是内置的布尔类型常量,用于表示真和假的状态. 布尔运算符 在Pytho ...

  10. python判断excel表格中的重复值

    #循环判断excel中的值,先在循环体外建一个空new_list=[],否则每次只返回一个值t="值" //变量赋值new_list.append(t) //把值传进空列表set_ ...

最新文章

  1. 普通大学生和大厂的距离有多长?
  2. 拜耳与Recursion联手加强数字化药物发现
  3. java输出流flush操作
  4. java 80端口_Java80端口占用异常解决方法
  5. 还需要“注意力层”吗?一堆“前馈层”在ImageNet上表现得出奇得好
  6. 查询字符串中字母出现的个数
  7. centos 关闭防火墙
  8. gerber文件怎么导贴片坐标_PCBA贴片加工厂家的上机贴片编程
  9. php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...
  10. php如何打包成apk,windows下PHP批量生成打包android程序APK
  11. appcan java_AppCan项目源码
  12. python下载酷狗音乐源码
  13. 苹果mac启动台变成问号_如何删除MacOs启动台(应用)残留的图标
  14. LT8522EX 是 Lontium 的矩阵开关芯片基于两路输入,输出 (VGA 和 HDMI)
  15. 计算机网络被病毒攻击怎么办,电脑被病毒入侵了怎么办
  16. idel使用工具快捷键
  17. pcie转m2装系统win10_M.2接口NVMe SSD固态驱动器安装win10
  18. Python调用纷享销客CRM开放平台API
  19. 计算机综合板式制作步骤,板式家具的制作流程以及工具详解
  20. HTML 基础教程:HTML 基础教程

热门文章

  1. 找出区间偶数c语言,c语言实践输出某个区间中不是3的倍数的偶数
  2. You-Get—— 基于 Python3 的媒体下载工具
  3. python中unique函数_Pandas Series.unique()用法介绍
  4. WPF:更好得理解对话框和ShowDialog方法 .
  5. 浅谈C语言中的强符号、弱符号、强引用和弱引用【转】
  6. MySQL索引类型总结和使用技巧以及注意事项(转)
  7. 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布...
  8. netty高级篇(3)-HTTP协议开发
  9. 单例模式专集细节讲述
  10. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 大型软件系统客户端数据同步的问题解决...