【问题标题】:How to choose randomly between two values? [duplicate]如何在两个值之间随机选择? [复制]
【发布时间】:2019-08-19 07:50:32
【问题描述】:

所以基本上我试图让一段代码在两个值 -40 和 40 之间随机选择。

为此,我正在考虑使用良好的旧数学,例如 -

random_num = ((-1)^value)*40,其中 value = {1, 2}。

random_num,顾名思义应该是一个随机数。

有什么帮助吗?

我正在使用python,使用库的解决方案是可以接受的。

【问题讨论】:

  • import random random.randint(-40,40) 你试过了吗?
  • 您想要范围 -40 到40 或选择 -40 或40 的值?
  • @yatu 在我看来模棱两可
  • 那么就np.random.choice([-40,40])
  • 当标准库提供了完美的解决方案时,为什么这么多程序员会添加 NumPy 开销?

标签: python numpy


【解决方案1】:

如果你想要一个介于 -40 和 +40 之间的随机整数值,那么

import random
random.randint(-40, 40)

https://docs.python.org/3.1/library/random.html#random.randint

如果你想选择 -40 或 +40,那么

 import random
 random.choice([-40, 40])

https://docs.python.org/3/library/random.html#random.choice

如果您真的更喜欢选择 1 或 2 的实现,就像您的问题一样,请在 random.choice 方法中插入这些值。

提供了上述解决方案,因为我觉得这个问题有些模棱两可。

【讨论】:

    【解决方案2】:

    假设L 是您要从中选择的值列表,那么random.choice(L) 将完成这项工作。

    在你的情况下:

    import random
    L = [-40, 40]
    print(random.choice(L))
    

    【讨论】:

      【解决方案3】:

      在 Python 中很简单:

      Python 3.7.3 (default, Mar 27 2019, 13:36:35) 
      [GCC 9.0.1 20190227 (Red Hat 9.0.1-0.8)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> from random import choice
      >>> choice((-40, 40))
      40
      >>>
      

      【讨论】:

        【解决方案4】:

        您可以使用python中的choices函数来实现这一点。如果您希望仅选择 -40 或 40 的值,则第二个参数是概率/权重。

        from random import choices
        choices([-40,40], [0.5,0.5])
        

        【讨论】:

        • OP 想要 -40 或 40,而不是介于 -40 和 40 之间的值。
        • @Guybrush 更新了我的答案。这应该没问题
        • 我不认为choices在这里应该优先于choice,因为前者返回一个选定项目的列表(即使只有一个项目)。这意味着 OP 将不得不做 x = choices(...)[0] 其中x = choice(...) 就足够了,更简单且更具可读性;-)
        • 同意@Guybrush!
        猜你喜欢
        • 2020-05-17
        • 2016-12-17
        • 2016-05-18
        • 2012-05-19
        • 2013-10-01
        • 1970-01-01
        • 2015-11-09
        • 2021-04-12
        • 1970-01-01
        相关资源
        最近更新 更多