【发布时间】:2019-05-08 16:19:50
【问题描述】:
我之前问过以下问题 Permutation of n bernoulli random variables in R
这个问题的答案很好用,只要n比较小(
此代码的目的是计算精确分布(因此是排列)和正态近似的 CDF 之间的差异。我随机生成一些数据,计算测试统计量,然后我需要通过将导致较小测试统计量值的所有排列相加除以排列总数来确定 CDF。
我的想法是一次只生成一个排列列表,注意它是否小于我的观察值,然后继续下一个,即遍历所有可能的排列,但我不能只拥有要循环遍历的所有排列的数据框,因为这会导致完全相同的大小和速度问题。
长话短说:我需要为 n 次伯努利试验生成所有可能的 1 和 0 排列,但我需要一次执行一次,以便生成所有这些排列,并且对于任意 n 次都不会多次生成.对于 n = 3, 2^3 = 8,我会先生成
000
计算我的测试统计量是否大于(1 或 0)然后生成
001
再次计算,然后生成
010
计算,然后生成
100
计算,然后生成
011
等到 111
我很满意这是一个超过 2^n 的循环,它在循环的每一步输出排列,但不会将它们全部保存在某个地方。另外,我不在乎它们的生成顺序,以上只是我手动操作时的列出方式。
此外,如果有任何方法可以加速以前的代码,那也会有所帮助。
【问题讨论】:
标签: r performance permutation