- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在 a
和 b
之间选择一个随机整数,包括在内。
我知道 3 种方法。然而,他们的表现似乎非常违反直觉:
import timeit
t1 = timeit.timeit("n=random.randint(0, 2)", setup="import random", number=100000)
t2 = timeit.timeit("n=random.choice([0, 1, 2])", setup="import random", number=100000)
t3 = timeit.timeit("n=random.choice(ar)", setup="import random; ar = [0, 1, 2]", number=100000)
[print(t) for t in [t1, t2, t3]]
在我的机器上,这给出了:
0.29744589625620965
0.19716156798482648
0.17500512311108346
使用 online interpreter ,这给出:
0.23830216699570883
0.16536146598809864
0.15081614299560897
请注意,使用专用函数来完成我正在做的事情的最直接版本 (#1) 比预定义数组的最奇怪版本 (#3) 差 50%然后从中随机选择。
这是怎么回事?
最佳答案
这只是实现细节。 randint
代表randrange
,所以它有另一层函数调用开销,并且 randrange
经历了大量的参数检查和其他 crud。相比之下,choice
是一个非常简单的单行代码。
这是此调用经过的代码路径 randint
,删除了注释和未执行的代码:
def randint(self, a, b):
return self.randrange(a, b+1)
def randrange(self, start, stop=None, step=1, _int=int, _maxwidth=1L<<BPF):
istart = _int(start)
if istart != start:
# not executed
if stop is None:
# not executed
istop = _int(stop)
if istop != stop:
# not executed
width = istop - istart
if step == 1 and width > 0:
if width >= _maxwidth:
# not executed
return _int(istart + _int(self.random()*width))
这是 choice
经过的代码路径:
def choice(self, seq):
return seq[int(self.random() * len(seq))]
关于python - 选择的性能与 randint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29574605/
我有一个关于两种方法的简单而广泛的问题: scipy.stats.randint 和 numpy.random.randint 在阅读了这两种方法的 API 之后,我对何时最好使用每种方法感到有点困惑
在Python编程中,随机数的生成是一项常见的任务。random.randint()函数是Python中生成随机整数的常用函数之一。该函数可以生成指定范围内的随机整数,为数据处理、模拟实验和游戏开发等
对于这个项目,我需要在随机点绘制 400 个不同的正方形,并且彼此之间至少相距 5 个像素。目前,框大多绘制在窗口底部,并且在程序卡住之前只绘制了大约一半。我咨询了我的教授,他们被难住了。 #Impo
from random import randint number_of_trials = 100 range_of_random_numbers = 1000 for each in number_
from random import randint 这是我用来导入 Random 模块的代码。当我运行代码时,它会导入一个名为 random.py 的用于测试代码的文件。这导致了各种错误,所以我在回
我是 python 的新手,我想知道如何使代码重复 random.randint 部分 100 次。 #head's or tail's print("you filp a coin it lands
我想在 a 和 b 之间选择一个随机整数,包括在内。 我知道 3 种方法。然而,他们的表现似乎非常违反直觉: import timeit t1 = timeit.timeit("n=random.ra
我正在用 Python 中的随机库来模拟我工作的项目,我发现自己处于一个非常奇怪的位置。 假设我们在 Python 中有以下代码: from random import randint import
我想在 a 之间选择一个随机整数和b (两者均包含),统计权重为c . c是 a 之间的值和b . 应用权重因子最有效的方法是 c到 random.randint? 我得到的最接近的是this问题,但
我想在 a 之间选择一个随机整数和b (两者均包含),统计权重为c . c是 a 之间的值和b . 应用权重因子最有效的方法是 c到 random.randint? 我得到的最接近的是this问题,但
我有一个生成sms_token的函数。它不能与数据库中现有的重复。然而,token的空间可能不够大,那么新的token可能会发生冲突。 Python 3.7.0 from random import
我正在努力在 Python 2.7 中导入random。我想让这段代码生成两张随机卡。当前代码不会生成随机卡。如果我请求卡片 (9,11),代码会生成总共 19 张卡片 (9,J)。输出没有任何随机性
我正在尝试用 python 编写简单的角色创建页面。我想要重新滚动统计信息的选项。问题是,刷新页面后,统计数据保持不变。下面是我的代码: View .py from my import Charac
我正在尝试运行一个简单的程序,其中我试图在循环中运行 random.randint() 以更新字典值,但它似乎无法正常工作。它似乎总是产生相同的值(value)。 到目前为止的程序如下。我正在尝试创建
我目前正在尝试在添加下一个项目之前将一个随机项目(使用 randint)从一个列表附加到另一个列表。好吧,这可能是一种奇怪的表达方式,但我不确定如何描述它 - 我很抱歉。因此,这里是我当前的相关代码和
在 python 控制台中我可以运行: from random import randint 但是当我运行时出现错误: import random.randint 错误说: ModuleNotFoun
我有这个游戏,您需要对列表中发送的 5 个随机表情符号使用react。问题在于,有时 random.randint() 会吐出相同的表情符号两次,因此不可能用相同的表情符号对同一消息做出两次 reac
我想生成 0-9 之间的随机整数(包括两端),但我想确保它不会经常连续生成相同的数字。我计划使用 random 模块中的 randint 函数。但我不确定它是否会派上用场。 random.randin
所以我生成了一个带有 numpy 命名高度的随机列表... heights = random.randint(10, size=random.randint(20)) 我将此列表用于测试目的,但我有一
我有一个名为:cars 的专栏并想创建另一个名为 persons 的使用 random.randint()我有: dat['persons']=np.random.randint(1,5,len(da
我是一名优秀的程序员,十分优秀!