2013-04-08 94 views
0

我想从1:1000群体中产生10个随机数,产生这个数的代码重复10次。我希望样本不需要替换,以便10组随机数之间的交集为空。重复采样不更换

首先,如果我在r中使用了样本函数,并将其替换为false,它并没有多大帮助,当我在网上搜索时发现了一个函数,但我无法下载r中的包。因此,在短期我想做的事情完全一样,下面的代码:

http://rss.acs.unt.edu/Rdoc/library/urn/html/urn.html 但手动而不是使用的骨灰盒包

我试着下面的代码,但所产生的样本不是唯一的,我选择行“数据”随机

for(j in 1:10) { 
    x=unique(data[,2]) 
    tr=sample(length(x),0.9*length(x),replace=FALSE) 
} 
+0

假设,你打算如何调用urn函数?什么论点? – Nishanth 2013-04-08 15:59:40

+0

你能证明你试过的吗?也许我们可以通过'sample'找出你的代码有什么问题。 – liuminzhao 2013-04-08 16:00:24

+1

它与样本(1:1000,100,replace = FALSE)有什么不同? – juba 2013-04-08 16:00:35

回答

3

考虑到@ ElKamina的评论,你可以使用sample产生100个号码,并将它们分配到一个10×10矩阵:

matrix(sample(1:1000, 100, FALSE), ncol=10) 
+0

通过复制,你不能肯定会得到互斥的随机数列表,对吧? – ElKamina 2013-04-08 16:05:20

+0

@ElKamina你绝对正确 – 2013-04-08 16:08:53

+0

由于OP要求这些集合是互斥的,你能稍微修改你的解决方案吗?首先对100个数字进行采样,然后将其重新组合为10X10的矩阵。 – ElKamina 2013-04-08 16:11:51

0

我喜欢样本的100个值,并把它们放在最好的10乘10矩阵中,但另一个选项是从完整列表中抽取第1个10,然后使用setdiff来计算没有10个已选择的集合,再次使用setdiff等。

如果您不提前知道每个样品中有多少个样品或多少个样品,这种方法可能会更好,但在这些情况下您可以使用sample随机排列整个1000列表,然后从排列列表中选取组。