gpt4 book ai didi

python - 如何生成不包含零的随机数?

转载 作者:行者123 更新时间:2023-12-04 08:53:41 29 4
gpt4 key购买 nike

我正在尝试创建一个可以找到 multiplicative persistence 的程序在随机的数字中。然而,这个程序必须处理大数(>10233)。但是,当我使用 random.randint(10**233, 10**400) 时,我不禁注意到绝大多数数字都包含零,这将导致 0 乘法持久性。在我的算法中,我试图通过以下方法摆脱这些数字:

def find_new_i():
i = 10
while "0" in str(i):
i = random.randint(10**233,10**400)
return i
但是,这种方法真的很慢,并且不能很快地生成数字。
有没有人对更有效的方法有任何想法?

最佳答案

在这么大的数字中出现 0 的几率非常高,这就是 while 的原因。循环很可能会重复很多次。
最好用 1 到 9 之间的随机数字替换任何零。

def find_new_i():
i = random.randint(10 ** 233, 10 ** 400)
i = int(''.join(str(random.randint(1, 9)) if d == '0' else d for d in str(i)))
return i
或者如果您不介意将所有零替换为相同的随机数字:
i = int(str(i).replace('0', str(random.randint(1, 9))))
在这个阶段,简单地“手动”构建数字可能更有意义(但是这种方法比上述方法慢约 4 倍,请参阅评论):
def find_new_i():
return int(''.join(str(random.randint(1, 9))
for _ in range(random.randint(233, 400))))

关于python - 如何生成不包含零的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63960554/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com