Re: [问题] sample中一个每个都抽到

楼主: Wush978 (拒看低质媒体)   2017-06-23 15:34:34
逆向思考全垒打
我把问题改一下。
如果我要从1:10中抽20个sample,并且要保证每一个资料都有抽到
我想到两种写法:
# 抽到符合条件为止
x <- sample(10, 20, TRUE)
while(length(unique(x)) != 10) {
x <- sample(10, 20, TRUE)
}
# 先保证1:10, 然后再抽
x <- c(1:10, sample(10, 10, TRUE))
## 如果顺序重要,则要再乱序一次
x <- sample(x, length(x), FALSE)
※ 引述《jas9441314 (jet B)》之铭言:
: [问题类型]:
:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 请把以下不需要的部份删除
: 入门(写过其他程式,只是对语法不熟悉)
: *[m
: [问题叙述]:
:
: 我想要从1:368个数字当中 根据每个数字出现的机率p=c(p1,p2,...,p368)抽取1次放回
: 希望1:368每个数字都能被抽中
: 然后重复抽10次这样的动作
: 但是目前抽出来有些情况只会抽出367个数字而非368个
: 想请问各位大大如何解决 感谢
:
: [程式范例]:
:
: replicate(10,saple(1:368,nrow(data),replace=TRUE,prob=p))
:
: [环境叙述]:
:
: 请提供 sessionInfo() 的输出结果,
: 里面含有所有你使用的作业系统、R 的版本和套件版本资讯,
: 让版友更容易找出错误
:
: [关键字]:
:
: 选择性,也许未来有用
:
作者: f496328mm (为什么会流泪)   2017-06-23 17:27:00
作者: wolfxyz   2017-06-23 17:47:00
很棒耶 逼电脑抽到成功为止
作者: memphis (让你喜欢这世界~)   2017-06-23 18:03:00
我觉得这跟原本的机率设定已经不一样了说到底还是原po的叙述自相矛盾不清楚
作者: lin15 ( )   2017-06-23 22:50:00
还有个做法是当未抽取数目<未抽到的数目就强制结束
楼主: Wush978 (拒看低质媒体)   2017-06-26 17:34:00
XD 我其实漏看了他的机率设定。但是如果照他的机率设定再加上失败重抽,可能就可以了(?)这种思维,其实来自于当年学的importance sampling

Links booklink

Contact Us: admin [ a t ] ucptt.com