我试图在1-9之间产生一组480个随机整数。但是有一些限制因素:
我已经能够生成一组随机数,允许重复数字,使用:
NumRep <- sample(1:9, 480, replace=T)
但是没能弄清楚如何允许在整个集合上重复数字,但是不允许顺序重复(例如2 5 3就可以了,2 5 5就不会)。我没有奇怪/偶数约束。
对于上下文,这不是功课!我是研究员,这是我正在创造的心理学实验的一部分。
非常感谢任何帮助!
答案 0 :(得分:0)
首先,问题失去了用这种条件模拟的“随机”方式。无论如何,这段代码与第一个约束相对应:
# Build a vector
C<-vector()
# Length of the vector
n<-480
# The first element
C<-sample(1:9,1)
# Complete the rest
for (i in 2:n){
# Take a random number not equal to the previous one
C[i] <- sample(c(1:9)[1:9!=C[i-1]],1)
}
# It is an odd number?
C %% 2 == 0
# How many consecutive odd numbers are in the sequence?
# Build a table with this information
TAB <- rle( C %% 2 == 0)
# Maximum of consecutive odd numbers
max(TAB$lengths[TAB$values==T])
# Maximum of consecutive even numbers
max(TAB$lengths[TAB$values==F])
我不明白第二个约束,但我希望代码的最后部分有所帮助。您应该使用该信息来交换某些值。