求一个随机算法,要求其返回值位于 0~x(0<x=<1) 之间的概率为 x^2
使用系统提供的线性随机函数来进行函数变换,线性随机函数返回值在 0~x 之间的概率为 x。
(某公司笔试题,请教各位)
def my_rand Math.sqrt system_rand end
把目标分布的累积密度函数的反函数应用到均匀分布随机函数的结果上就可以
我们要求的累积密度函数 F(x) = x**2, 设系统提供的函数对应随机变量为 X, 那么我们只需要证明
P(F^-1(X) < x) = F(x)
F 是单调增,所以
P(F^-1(X) < x) = P(X < F(x))
又由于对随机变量 X 有 P(X < x) = x
所以 P(X < F(x)) = F(x)
max(random, random)
#3 楼 @Kabie o_O 你的更好
X 和 Y 都独立均匀分布
P(max{X,Y} < x) = P(X < x, Y < x) = x**2