作者DrRd (就这样吧)
看板R_Language
标题[问题] 乱数选取但不能连续
时间Tue Sep 1 16:50:14 2015
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
从1~10中随机抽取5个数,但不能出现三个以上的连续数字
例如:不能抽出1、2、3,或者是3、4、5、6之类的
目前想到是否可以检查如果抽出来的数字如果有超过三个以上的连续数字就用sample重抽
但是不知道如何检查
[程式范例]:
无
[环境叙述]:
R 3.2
[关键字]:
随机抽样
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.62.161
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1441097416.A.919.html
1F:→ celestialgod: 除了你列的方法就只剩下把样本空间直接算出来的方法 09/01 16:55
2F:→ celestialgod: .... 09/01 16:55
3F:推 celestialgod: 检查的话就用sort跟diff确定是否有连续的1两个以上 09/01 16:56
4F:→ celestialgod: 像是这样v=rle(diff(sort(nums))); 09/01 16:57
5F:→ celestialgod: if(any(v$values==1)) 09/01 16:58
6F:→ celestialgod: appear=any(v$length[v$values==1]>1) 09/01 16:59
7F:→ celestialgod: nums是抽出的数字,appear是有出现三个以上连续数字 09/01 16:59
8F:→ celestialgod: 的逻辑值 09/01 16:59
9F:→ celestialgod: 避免没appear这个物件,建议在if前先放appear=FALSE 09/01 17:00
10F:→ celestialgod: 这样就可以while(appear){nums=sample(... ) #and c 09/01 17:01
11F:→ celestialgod: heck with above code} 09/01 17:01
12F:→ celestialgod: 不小心回太长,有需要,我在回文 09/01 17:01
13F:→ DrRd: rle似乎可行哦!感恩! 09/01 17:04