来自两个非重叠范围的Python随机唯一值

卡米编码

如标题所述,从两个范围或更准确地说是100个随机唯一值,存在一个范围和一个子范围被排除在有效值之外。

示例的范围是0到10000,随机的100个数字不在10到20的范围内

要求:

  • 子范围可以在开头或结尾。
  • 内存开销降至最低。
  • 随机化尽可能接近random.shuffle()。

我知道random.sample(xrange(0,10000),100)给出100个唯一值。

设置我将存储三个值[开始,结束,总计]

  1. 开始=子范围的开始
  2. 结束=子范围的结尾
  3. 总计=范围的长度

最好的我能拿出:

randlist=[]
while len(randlist)<100:
    temp=random.randint(0,total)
    if temp < start or temp > end:
       if temp not in randlist:
           randlist.append(temp)

这是真正的随机(伪随机)还是我有任何影响?

斯蒂芬·波希曼(Stefan Pochmann)
randlist = [r + (end - start + 1) * (r >= start) for r in
            random.sample(range(total - end + start), 100)]

示例/“证明”:

  • 总数= 10,开始= 2,结束= 5
  • 允许使用7个数字:0、1、6、7、8、9、10
  • 范围(总结束+开始)=范围(7)从7个数字0..6中选择(到目前为止很好)
  • 大于或等于start = 2的数字向上移动end-start + 1 = 4
  • 结果数字为0、1、6、7、8、9、10。

演示:

>>> sorted(randlist2(2000000000, 10000000, 1900000000))
[176827, 3235435, 3278133, 3673989, 5148447, 8314140, 8885997, 1900189345, 1902880599,
...
1997494057, 1997538971, 1997854443, 1997907285]

它可以工作到超过20亿,轻松超过“维基百科英语维基百科页面的数量,无论是多少百万”的必要上限:-)。之后它得到OverflowError: Python int too large to convert to C ssize_t我没有看到我的PC的内存使用高峰,结果是即时的。显然,这是使用Python 3的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自两个索引的唯一值乘积的MultiIndex

来自分类Dev

在两个值的范围内随机变长

来自分类Dev

用于两个非唯一值的数据结构

来自分类Dev

根据唯一值python将一个列表分为两个列表

来自分类Dev

一种非索引的方式来搜索R中两个列表之间的唯一值

来自分类Dev

从两个值创建唯一编号;位移?

来自分类Dev

SQL Server约束以允许“两个唯一”值

来自分类Dev

两个值之间唯一的double数

来自分类Dev

比较两个表或插入唯一值

来自分类Dev

两个文件中的唯一值

来自分类Dev

测试值是否在两个范围之一内

来自分类Dev

带有两个非重叠列中的值的pandas数据透视表

来自分类Dev

如何管理python中两个范围之间的值?

来自分类Dev

确保两个随机形状不会彼此靠近或重叠

来自分类Dev

如何在一个范围内相加两个随机数?

来自分类Dev

查找两个间隔数据之间的重叠范围

来自分类Dev

检查是否有两个以上的日期范围重叠

来自分类Dev

MySQL检查两个日期范围是否与输入重叠

来自分类Dev

在两个表中查找重叠的日期范围

来自分类Dev

检查是否有两个以上的日期范围重叠

来自分类Dev

确定两个时间范围是否重叠

来自分类Dev

来自两个表的UNION记录以及非NULL的偏好字段(否则来自第一张表的偏好值)

来自分类Dev

在单独的函数中使用来自两个句柄的 jquery-ui 范围滑块的值

来自分类Dev

python-如何使python中的随机Beta像两个值之间一样正常?

来自分类Dev

PHP将两个单独的冲突日期范围组合为唯一对

来自分类Dev

如何计算两个或多个日期范围之间的唯一天数

来自分类Dev

当字段每个唯一值具有两个值时,报告每个唯一ID返回多个值

来自分类Dev

在一个SQL查询中合并两个表,并使日期值唯一

来自分类Dev

两个列表中的非重叠日期时间

Related 相关文章

  1. 1

    来自两个索引的唯一值乘积的MultiIndex

  2. 2

    在两个值的范围内随机变长

  3. 3

    用于两个非唯一值的数据结构

  4. 4

    根据唯一值python将一个列表分为两个列表

  5. 5

    一种非索引的方式来搜索R中两个列表之间的唯一值

  6. 6

    从两个值创建唯一编号;位移?

  7. 7

    SQL Server约束以允许“两个唯一”值

  8. 8

    两个值之间唯一的double数

  9. 9

    比较两个表或插入唯一值

  10. 10

    两个文件中的唯一值

  11. 11

    测试值是否在两个范围之一内

  12. 12

    带有两个非重叠列中的值的pandas数据透视表

  13. 13

    如何管理python中两个范围之间的值?

  14. 14

    确保两个随机形状不会彼此靠近或重叠

  15. 15

    如何在一个范围内相加两个随机数?

  16. 16

    查找两个间隔数据之间的重叠范围

  17. 17

    检查是否有两个以上的日期范围重叠

  18. 18

    MySQL检查两个日期范围是否与输入重叠

  19. 19

    在两个表中查找重叠的日期范围

  20. 20

    检查是否有两个以上的日期范围重叠

  21. 21

    确定两个时间范围是否重叠

  22. 22

    来自两个表的UNION记录以及非NULL的偏好字段(否则来自第一张表的偏好值)

  23. 23

    在单独的函数中使用来自两个句柄的 jquery-ui 范围滑块的值

  24. 24

    python-如何使python中的随机Beta像两个值之间一样正常?

  25. 25

    PHP将两个单独的冲突日期范围组合为唯一对

  26. 26

    如何计算两个或多个日期范围之间的唯一天数

  27. 27

    当字段每个唯一值具有两个值时,报告每个唯一ID返回多个值

  28. 28

    在一个SQL查询中合并两个表,并使日期值唯一

  29. 29

    两个列表中的非重叠日期时间

热门标签

归档