【问题标题】:Difference between randint and sample in pythonpython中randint和sample的区别
【发布时间】:2020-08-27 15:15:43
【问题描述】:

我已经尝试生成随机码并尝试了两种方法

sample([0..9],x)

[randint(0,9) for i in range(x)]

当我第一次使用示例时,我注意到它不会生成像“2222222”这样的数字,它会生成更多分布的数字 而 randint 更有可能生成像“2222222”这样的数字。

两者有什么区别?以及如何选择最佳方法为不同情况生成随机数?

【问题讨论】:

  • sample([0..9],x) 不是有效的 Python 代码。请您编辑以显示您正在使用的实际代码吗?

标签: python python-3.x random


【解决方案1】:

random.sample(x, num) 总是从列表 x 中返回 num 唯一元素,而不重复输出。

random.randint(x, y) 返回 x 和 y 范围内的随机数,使得 x

您可以阅读他们的相关信息here

【讨论】:

    【解决方案2】:
    1. sample 方法

    文档描述了这个功能:

    返回从种群序列或集合中选择的唯一元素的 k 长度列表。用于无放回的随机抽样。

    在我们的例子中,该方法从给定范围中获取 x 唯一元素(这足以保证结果的唯一性),但是,该范围包含 10 个不同的数字 - 因此您没有看到重复元素。

    注意:一个很好的问题是,如果我们传递的样本总体小于请求的不同元素的数量,会发生什么。 好吧,在这种情况下,会引发一个错误ValueError: Sample larger than population or is negative

    1. randint 循环

    [randint(0,9) for i in range(x)] 生成随机数,循环的每次迭代都是独立的,因此您见证了结果中的重复元素。

    【讨论】:

      猜你喜欢
      • 2020-09-14
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2021-08-26
      • 2021-09-30
      • 1970-01-01
      • 2011-10-25
      相关资源
      最近更新 更多