[問題] 亂數選取但不能連續

看板R_Language作者 (就這樣吧)時間10年前 (2015/09/01 16:50), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用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

09/01 16:55, , 1F
除了你列的方法就只剩下把樣本空間直接算出來的方法
09/01 16:55, 1F

09/01 16:55, , 2F
....
09/01 16:55, 2F

09/01 16:56, , 3F
檢查的話就用sort跟diff確定是否有連續的1兩個以上
09/01 16:56, 3F

09/01 16:57, , 4F
像是這樣v=rle(diff(sort(nums)));
09/01 16:57, 4F

09/01 16:58, , 5F
if(any(v$values==1))
09/01 16:58, 5F

09/01 16:59, , 6F
appear=any(v$length[v$values==1]>1)
09/01 16:59, 6F

09/01 16:59, , 7F
nums是抽出的數字,appear是有出現三個以上連續數字
09/01 16:59, 7F

09/01 16:59, , 8F
的邏輯值
09/01 16:59, 8F

09/01 17:00, , 9F
避免沒appear這個物件,建議在if前先放appear=FALSE
09/01 17:00, 9F

09/01 17:01, , 10F
這樣就可以while(appear){nums=sample(... ) #and c
09/01 17:01, 10F

09/01 17:01, , 11F
heck with above code}
09/01 17:01, 11F

09/01 17:01, , 12F
不小心回太長,有需要,我在回文
09/01 17:01, 12F

09/01 17:04, , 13F
rle似乎可行哦!感恩!
09/01 17:04, 13F
文章代碼(AID): #1LvMR8aP (R_Language)
文章代碼(AID): #1LvMR8aP (R_Language)