R中的快速采样

时间:2011-03-28 11:24:17

标签: r

是否有更快的方法来获取随机子样本(没有替换),而不是base::sample函数?

3 个答案:

答案 0 :(得分:14)

你可以通过消除base :: sample函数调用来获得一点点加速:

> x<- rnorm(10000)
> system.time(for(i in 1:100000) x[.Internal(sample(10000L, 10L, FALSE, NULL))])
   user  system elapsed 
  2.873   0.017   2.851 
> system.time(for(i in 1:100000) sample(x,10))
   user  system elapsed 
  3.420   0.025   3.258 

根据您的问题,可能还有其他更聪明的方法来加速您的代码。想想用一个大的替换许多小样本的小调用的方法。

答案 1 :(得分:3)

没有

我的笔记本电脑可以在3毫秒内获得10,000个样品并进行更换。没有替换我可以在5ms内获得它们。从500个分布中多次绘制需要66 ms。你有多快需要它?

答案 2 :(得分:0)

如果没有使用CUDA / gputools,你就不会找到更快的方法。