R中无替换的随机有序样本

R中无替换的随机有序样本,r,random,R,Random,函数RandomKSubsets来自 从一组数字中绘制无替换的有序子集 ` RandomKSubsets:=proc(n,k) 本地rno,东、西; 如果nsample对于大型n来说确实很慢。对于以下参数,在我的计算机上进行一次呼叫平均需要约15秒: set.seed(123) n_int <- 1.e7 n_s <- 1000 microbenchmark::microbenchmark(sample.int(n_int, n_s, prob = rep(1/n_int, n_

函数RandomKSubsets来自 从一组数字中绘制无替换的有序子集

`

RandomKSubsets:=proc(n,k)
本地rno,东、西;

如果n
sample
对于大型
n
来说确实很慢。对于以下参数,在我的计算机上进行一次呼叫平均需要约15秒:

set.seed(123)

n_int <- 1.e7
n_s <- 1000

microbenchmark::microbenchmark(sample.int(n_int, n_s, prob = rep(1/n_int, n_int)),
                               times = 5L,
                               unit = 's')

查看
示例
功能。它允许你从一个有替换或无替换的数字向量中采样。我想从所有有序整数集中统一采样。Sample函数不这样做。
Sample
根据值的频率进行采样。如果您想改变这一点,那么使用
probs
参数指定1/n或什么东西太慢,无法计算大n和k的所有概率。慢与快是不同的问题。您可以通过Rcpp将上述算法移动到Cpp中,使其在R中更快,这可能是最快的速度
set.seed(123)

n_int <- 1.e7
n_s <- 1000

microbenchmark::microbenchmark(sample.int(n_int, n_s, prob = rep(1/n_int, n_int)),
                               times = 5L,
                               unit = 's')
microbenchmark::microbenchmark(wrswoR::sample_int_expj(n_int, n_s, prob = rep(1/n_int, n_int)),
                               times = 5L,
                               unit = 's')