我想在python中生成一个从1到n的伪随机数,但是数字越大,生成数字的可能性应该越小。因此,1 将是该随机函数最可能的结果 2 的可能性是 1 的一半 3 的可能性是 1 的三分之一 4 的可能性是 1 的四分之一 ... k将为 1/ k可能性为 1。
因此,如果结果为 1 的机会为 1/10,则结果为 2 的机会为 1/20、3:1/30、k:1/10 k。
我不想制作一个列表并选择一个随机值或任何此类不准确的黑客,所以不建议这样做。
你会接受准确的黑客攻击吗?
random.choices(range(1,n+1),[1/k for k in range(1,n+1)])
Run Code Online (Sandbox Code Playgroud)
作品。此外,它还有一个可选参数k,可让您根据需要生成任意数量的随机数。