我正在寻找优化一个简单的给定代码,该代码生成一个不在给定列表中的随机数([0,1,2])。随机数生成器是来自 ROOT 的 TRandom3。
def getNumber(noList, randomgen):
#Fügen Sie hier Ihren Code ein!:
i = randomgen.Integer(3)
while i in noList:
i = randomgen.Integer(3)
return i
这是非常基本的,只会生成新数字,直到达到允许的数字。
我自己优化的代码如下所示:
def bessereAuswahl(noList):
return random.choice([elem for elem in [0,1,2] if elem not in noList])
我只是从列表 [0,1,2] 中删除所有不允许的数字,然后使用 random.choice 选择一个元素。
在 Windows 10 上运行我的性能有所提高,在 linux 上运行相同的代码我的性能有所下降。
为什么会这样?
linux 上的 random 是否存在隐藏的性能损失,还是 pyroot 的性能提升?