在R:我試圖找出一種方法來生成值爲0或1的向量。而不是從統一分佈獨立繪製每個0和1我想要1聚集例如(1,0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,...)。以其最簡單的形式如:「如果前一個數字是1,則增加繪製1的可能性」。或者讓繪圖1的機會取決於最後說5個數字的總和。有沒有這樣做的有效方式,甚至可能是一個包。會讓人想起rbinom(n,1,prob)
變量prob
。R生成聚簇的僞隨機數
0
A
回答
1
您可以使用循環嘗試以下方法。首先,您可以使用樣本創建一個名爲「x」的變量,該樣本將分配初始值0或1.
在循環內您可以再次使用樣本函數,但是這次您將值分配給prob選項。爲此,我將概率設置爲70/30分割(即,如果您以前的數字爲0,則下一個數字爲0時有70%的概率,反之亦然,如果您以前的值爲1)。
x = sample(c(0,1),1)
for(i in 2:100){
if(x[i-1] == 0){
x[i] = sample(c(0,1),1,prob=c(0.7,0.3))
} else {
x[i] = sample(c(0,1),1,prob=c(0.3,0.7))
}
}
x[1:20]
[1] 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0
0
所以我從科林查爾斯那裏得到了很好的靈感,並增加了一些可調整性。計算概率顯然有很多方法受到先前抽籤的影響。我最後使用最後w
抽獎的總和的截止m
來確定是否對每個0/1使用低概率p0
或高概率p1
來製作長度爲l
的向量。
f <- function (l, w, m, p0, p1){
v = rbinom(w,1,p0) #Initilize with p0
for (i in w:(l-1)){
v[i+1] <- ifelse(sum(v[(i-w+1):i]) > m,
rbinom(1,1,p1),
rbinom(1,1,p0))
}
return(v)
}
#Test:
set.seed(8)
plot(f(100, 5, 1, 0.1, 0.6)) #Clustered
plot(f(100, 5, 2, 0.1, 0.4)) #Less clustered
給出:
和(較少聚集):
相關問題
- 1. 僞隨機數生成
- 2. 僞隨機的URL生成
- 3. 生成可靠的僞隨機數
- 4. 生成強的僞隨機數字
- 5. Matlab:如何生成僞隨機數
- 6. 僞隨機數發生器
- 7. 使用垃圾值生成隨機或僞隨機數
- 8. 通過僞隨機樸素隨機數生成器生成隨機數序列的正確方法
- 9. R中的隨機數生成
- 10. R中的加權隨機數生成
- 11. 隨機二進制生成器(不僞)
- 12. 生成25個僞隨機字符串
- 13. 靜態僞隨機字段生成器
- 14. 沒有RTC的機器如何生成僞隨機數?
- 15. 使用R隨機生成數字
- 16. 產生不均勻的僞隨機數
- 17. 產生僞隨機從int
- 18. 隨機生成低聚地形
- 19. 避免在R中產生僞隨機數
- 20. 生成隨機數:計算隨機生成的x次數
- 21. 隨機數生成
- 22. 生成隨機數
- 23. 生成隨機數
- 24. 生成隨機數
- 25. 生成隨機數
- 26. 隨機數生成
- 27. 您的僞隨機數發生器(PRNG)是否不夠隨機?
- 28. [R data.table:產生隨機數
- 29. 僞隨機整數
- 30. R中的隨機生成矩陣
只是一個想法,也許產生一系列的序列,隨機地或交替地或者全部爲0或全部1,其長度由概率分佈(正態,泊松等)給出。然後將它們連接在一起。您將能夠規定長度,並根據您選擇的概率分配羣集長度 – Chris