随机向量无论顺序

时间:2013-05-28 14:51:47

标签: r random vector

我要做的是生成长度为k的n个向量,使得向量中的每个值都是随机数,并且不管每个向量中整数的顺序如何,都没有重复的向量。例如,不会有矢量1,2,3和2,1,3。

到目前为止,我所拥有的是生成一个向量的以下内容,我正计划循环遍历此代码以生成n个向量。

vector<- sample(1:20000,k)

我的一个想法是按升序对所有向量进行排序,然后删除重复的向量。是否有更简单/更有效的方式?

谢谢!

1 个答案:

答案 0 :(得分:-1)

一种方法是生成所有可能的组合,然后从该组中进行选择。这样可以保证没有重复:

> tmp <- combn(100, 3)
> dim(tmp)
[1]      3 161700
> tmp[ , sample( ncol(tmp), 10 ) ]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   34   35   28    3    3   29    8   24   50    53
[2,]   54   54   63   57   17   86   31   30   52    81
[3,]   97   79   87   92   53   94   90   83   87    97

当然,只有当组合的总数适合内存时,这才有效。虽然有办法迭代组合并只保留一些,或生成整数样本,然后将它们转换为适当的组合。

如果您想要的样本数量相对于可能组合的数量较小,那么拒绝方法可能会更有效。但是,如果样本数量相对于导致大量重复的组合数量较大,则可以更好地工作。