python docs开始,“set.pop()从s中删除并返回一个任意元素”.在生成一些随机数据来测试程序时,我注意到这个pop()函数的奇怪行为.这是我的代码(python 2.7.3):

testCases = 10

numberRange = 500

poppedValues = []

greaterPercentages = []

for i in range (testCases):

s = Set()

""" inserting 100 random values in the set, in the range [0, numberRange) """

for j in range (100):

s.add(random.randrange(numberRange))

poppedValue = s.pop()

greaterCount = 0

""" counting how many numbers in the set are smaller then the popped value """

for number in s:

if poppedValue > number:

greaterCount += 1

poppedValues.append(poppedValue)

greaterPercentages.append(float(greaterCount) / len(s) * 100)

for poppedValue in poppedValues:

print poppedValue, '\t',

print

for percentage in greaterPercentages:

print "{:2.2f}".format(percentage), '\t',

我在这里做的是,

>在集合中插入一些随机值,其中每个元素的范围为[0,numberRange)

>从集合中弹出一个元素(根据文档,它应该是随机的)

>计算集合中的元素数量小于弹出值

我预计弹出的值应该是随机值,并且集合中大约50%的数字将大于弹出值.但似乎pop()几乎总是返回集合中的最小数字.以下是numberRange = 500的结果.第一行表示弹出元素的值.第二行是元素的百分比,它小于弹出值.

9 0 3 1 409 0 1 2 4 0

0 % 0 % 0 % 0 % 87 % 0 % 0 % 0 % 0 % 0 %

我用不同的numberRange值进行了这个测试.似乎对于set元素的较低值,pop()几乎总是返回最低元素.但是对于更高的值,它返回一个随机元素.对于numberRange = 1000,结果是:

518 3586 3594 4103 2560 3087 4095 3079 3076 1622

7 % 72 % 73 % 84 % 54 % 51 % 79 % 63 % 67 % 32 %

我觉得这很随意.为何这种奇怪的行为?难道我做错了什么?

编辑:感谢大家的回答和评论,似乎“任意”,它不能保证它是“随机的”.

python set 随机_python – Set.pop()不是随机的吗?相关推荐

  1. python试卷生成_Python学习笔记文件读写之生成随机的测试试卷文件

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  2. python输出姓名_Python生成随机不重复姓名昵称

    姓采用百家姓,名字从常用名字高频字选取两个汉字,再和当前时间戳组合,估计应该是不会重复了,代码如下: # -*- coding:utf-8 -*- import random import time ...

  3. python随机数种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  4. python中随机种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  5. python double语法_python上手--基本语法和数据类型基础

    前面介绍了选择python开发工具的方法,根据需求和学习阶段的不同来选择不同的编译器.从本篇开始我们就选用Anaconda中的spyder模块作为开发编译平台,在下载过程中可以直接百度搜索anacon ...

  6. python 数据字典用法_python数据字典的操作

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器 ...

  7. python读入数据字典_python数据字典的操作

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器 ...

  8. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  9. python变量运算符_Python(三) 变量与运算符

    一.什么是变量 变量 = [1,2] 二.变量的命名规则 字母,数字,下划线,首字母不能是数字 系统关键字 不能用在变量名中 保留关键字 区别大小写 a=1,   a='1',   a=(1,2),  ...

最新文章

  1. linux-RPM安装
  2. 不重启的情况下linux系统安装中文包生效
  3. standalone vue initialization process - Vue应用的初始化过程
  4. 手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...
  5. python罗马数字转换,Python3.5实现的罗马数字转换成整数功能示例
  6. 领航机器人广告段子_教育机器人广告宣传语_段子网收录最新段子
  7. 【实践】LightSeq:高性能NLP序列推理实践-字节跳动.pdf(附下载链接)
  8. microsoft visual c++与microsoft visual net 版本对应关系
  9. 龙芯机器联网时,链接建立速度有点慢
  10. tarjan算法 java_Tarjan算法 割点和桥
  11. 网页视频播放器代码大全 + 21个为您的网站和博客提供的免费视频播放器
  12. 9.Pandas练习:美国个州的统计数据
  13. excel翻译功能怎么用?试试这些翻译excel的软件吧
  14. 美团四面 Java 岗,终获 offer,我是这么回答面试官的
  15. 【PR 基础】轨道遮罩键、交叉溶解的简单使用
  16. 一分钟学会手工注册BHO
  17. CSS 中 a 标签为什么不能继承父类的颜色?
  18. AndroidStudio的 Caused by java.lang.ClassNotFoundException Didn't find class com.gizwits.opensource.a
  19. UART的break信号
  20. 基于Django的论坛系统项目

热门文章

  1. 阿里云服务器部署django项目
  2. 原创 | 开源AI测试专题、Jmeter测试专题
  3. Vue项目中自动将px转换为rem
  4. 【编程训练-考研上机模拟】综合模拟2-2019浙大上机模拟(晴神)
  5. 斐波那契数列 (C#)
  6. 企业案例(二):增量恢复案例
  7. 【bzoj】 1412: [ZJOI2009]狼和羊的故事
  8. 前端之旅,做一点有回报的事情
  9. *在通配符及正则表达式中的差别
  10. WAF与IPS的区别总结