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