算法 求随机算法

ericwang0717 · 2014年11月06日 · 最后由 luikore 回复于 2014年11月06日 · 7440 次阅读

求一个随机算法,要求其返回值位于 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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号