当前位置: 首页 > 面试题库 >

在python中获取随机布尔值?

步弘和
2023-03-14
问题内容

我正在寻找最好的方法(快速而优雅)来获取python中的随机布尔值(翻转硬币)。

目前,我正在使用random.randint(0, 1)random.getrandbits(1)

有我不知道的更好的选择吗?


问题答案:

亚当的答案相当快,但是我发现答案random.getrandbits(1)要快得多。如果您真的想要布尔值而不是long值,那么

bool(random.getrandbits(1))

仍然是两倍的速度 random.choice([True, False])

两种解决方案都需要 import random

如果最大的速度不是优先考虑的话,那么random.choice阅读肯定会更好

$ python -m timeit -s "import random" "random.choice([True, False])"
1000000 loops, best of 3: 0.904 usec per loop
$ python -m timeit -s "import random" "random.choice((True, False))" 
1000000 loops, best of 3: 0.846 usec per loop
$ python -m timeit -s "import random" "random.getrandbits(1)"
1000000 loops, best of 3: 0.286 usec per loop
$ python -m timeit -s "import random" "bool(random.getrandbits(1))"
1000000 loops, best of 3: 0.441 usec per loop
$ python -m timeit -s "import random" "not random.getrandbits(1)"
1000000 loops, best of 3: 0.308 usec per loop
$ python -m timeit -s "from random import getrandbits" "not getrandbits(1)"
1000000 loops, best of 3: 0.262 usec per loop  # not takes about 20us of this

在看到@Pavel的答案后添加了此内容

$ python -m timeit -s "from random import random" "random() < 0.5"
10000000 loops, best of 3: 0.115 usec per loop


 类似资料:
  • 问题内容: 好的,我在代码中实现了这个SO问题:随机返回True或False 但是,我的行为很奇怪:我需要同时运行十个实例,每个实例每次运行仅返回一次true或false。令人惊讶的是,无论我做什么,每次我得到 有什么方法可以改善这种方法,以便我至少有大约50%的机会得到吗? 为了使它更易于理解:我将应用程序构建为JAR文件,然后通过批处理命令运行 程序的内容-使其尽可能简单: 如果我打开10个命

  • 我正在使用CodeIgniter 3和PostgreSQL 9.4数据库。如果数据库中相应列的数据类型是布尔值,有没有办法在PHP中获取布尔值? 我使用CodeIgniters查询生成器类,如下所示: 用户表中的所有布尔值都由字符串('t'和'f')表示。

  • 标准< code>rand()函数给出的数字对我来说不够大:我需要< code>unsigned long long的数字。我们如何得到非常大的随机数?我试着修改一个简单的散列函数,但是它太大,运行时间太长,而且从来不会产生小于1e5的数字!!

  • 嗨,我有一个代码检查代理。当我运行该方法时,我总是得到false。我明白这个问题是最后一个错误。当我用println在控制台上输出它时,它也在false和true之间存在差异,但没有将正确的值作为方法的返回值返回。你能帮忙吗!如果代理联机,代码必须输出true

  • 问题内容: Go的布尔类型的零值为。Postgres支持未定义的BOOL类型,表示为NULL。尝试从Go中的Postgres获取BOOL值时,这会导致问题: 输出: 解决这个问题的最惯用的方法是什么?我想象的两种解决方案都不是很吸引人: 不要使用Go的类型。相反,我可能会使用一个字符串,并进行自己的转换,这占 在Postgres中,请始终通过使用或其他方式确保BOOL为TRUE或FALSE 。 问

  • 问题内容: 我有一段代码应该在其中创建总机。我想返回所有打开的开关的列表。这里的“开”等于和“关”等于。因此,现在我只想返回所有值及其位置的列表。这就是我所拥有的,但它只返回第一次出现的位置(这只是我的代码的一部分): 这只会返回“ 4” 问题答案: 使用,返回找到的第一个匹配项的索引。 对于庞大的列表,最好使用: