随机数生成 - 约束序列

时间:2017-03-06 08:48:19

标签: r

我试图在1-9之间产生一组480个随机整数。但是有一些限制因素:

  • 序列不能包含2行重复的数字。
  • 序列必须在每80个数字序列中包含4个奇数序列和4个偶数序列(以任意顺序)(例如6 4 5 2 4 8 3 4 6 9 1 5 4 6 1)。

我已经能够生成一组随机数,允许重复数字,使用:

NumRep <- sample(1:9, 480, replace=T)

但是没能弄清楚如何允许在整个集合上重复数字,但是不允许顺序重复(例如2 5 3就可以了,2 5 5就不会)。我没有奇怪/偶数约束。

对于上下文,这不是功课!我是研究员,这是我正在创造的心理学实验的一部分。

非常感谢任何帮助!

1 个答案:

答案 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])

我不明白第二个约束,但我希望代码的最后部分有所帮助。您应该使用该信息来交换某些值。