看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 從1~10中隨機抽取5個數,但不能出現三個以上的連續數字 例如:不能抽出1、2、3,或者是3、4、5、6之類的 目前想到是否可以檢查如果抽出來的數字如果有超過三個以上的連續數字就用sample重抽 但是不知道如何檢查 [程式範例]: [環境敘述]: R 3.2 [關鍵字]: 隨機抽樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.62.161 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1441097416.A.919.html
celestialgod: 除了你列的方法就只剩下把樣本空間直接算出來的方法 09/01 16:55
celestialgod: .... 09/01 16:55
celestialgod: 檢查的話就用sort跟diff確定是否有連續的1兩個以上 09/01 16:56
celestialgod: 像是這樣v=rle(diff(sort(nums))); 09/01 16:57
celestialgod: if(any(v$values==1)) 09/01 16:58
celestialgod: appear=any(v$length[v$values==1]>1) 09/01 16:59
celestialgod: nums是抽出的數字,appear是有出現三個以上連續數字 09/01 16:59
celestialgod: 的邏輯值 09/01 16:59
celestialgod: 避免沒appear這個物件,建議在if前先放appear=FALSE 09/01 17:00
celestialgod: 這樣就可以while(appear){nums=sample(... ) #and c 09/01 17:01
celestialgod: heck with above code} 09/01 17:01
celestialgod: 不小心回太長,有需要,我在回文 09/01 17:01
DrRd: rle似乎可行哦!感恩! 09/01 17:04