调整区间上数出现的概率
区间上的数出现概率指数变化
假设函数random()
等概率随机返回一个在[0, 1)范围上的数,那么在[0, x)区间上的数出现的概率为x(0<x≤1)。
给定一个大于0的整数k,并且可以使用random()
函数,
请实现一个函数依然返回在[0, 1)范围上的数,但是在[0, x)区间上的数出现的概率为
x
k
x^k
xk(0<x≤1)。
算法思路
求k次random()
结果中的最大值。
若k次random()
结果中的最大值若为x,
则每次 独立random()
结果小于等于x,概率为x,
则总概率(k次结果中的最大值为x的概率)为
x
k
x^k
xk
相应代码
import random
# k次random()结果最大值
def randXPowerK(k):
if k < 1:
return None
max = random.random()
for i in range(1, k):
num = random.random()
if num > max:
max = num
return max
有任何疑问和建议,欢迎在评论区留言和指正!
感谢您所花费的时间与精力!