在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