一个快速的统一顺序统计生成器

机器算法验证 分布 模拟 随机生成 订单统计 指数分布
2022-03-29 05:20:10

有人可以为我提供此代码/函数的数学表达式,作为生成排序 随机数的快速方法:n U[0,1]

rsunif <- function(n) { n1 <- n+1
   cE <- cumsum(rexp(n1)); cE[seq_len(n)]/cE[n1] }
1个回答

R 代码意味着返回 并且结果来自检查累积之间的差异的顺序统计之间的差异相同的分布这在模拟圣经 Devroye 的非均匀随机变量生成(1986, pp. 207-219) 中有所描述和确立:

(E1,E1+E2,,E1++En)/i=1n+1Ei
Si=U(i)U(i1)

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

以及最近邻法的 Biau 和 Devroye 讲座(pp.5-7)

运行测试以将此间距方法与统一变量的直接排序进行比较,表明这种方法具有明显的优势(对于 n=100 和 10⁷ 复制,使用 Rbenchmark工具)。

      test replications elapsed relative user.self sys.self user.child
2   direct          1e7 355.213    4.722   355.112    0.024          0
1 spacings          1e7  75.221    1.000    75.208    0.000          0

尽管将增加到会降低增益:nn=103

      test replications elapsed relative user.self sys.self user.child
2   direct          1e6  96.225    1.886     96.20        0          0
1 spacings          1e6  51.029    1.000     51.02        0          0