R 随机数生成-约束序列
我试图生成一组480个1-9之间的随机整数。但是,存在一些限制:R 随机数生成-约束序列,r,R,我试图生成一组480个1-9之间的随机整数。但是,存在一些限制: 序列不能在一行中包含两个重复的数字 该序列必须在每80位数字序列(例如6 4 52483 4 69154 61)中恰好包含4个奇数序列和4个偶数序列(以任何顺序) 我已经能够使用以下方法生成一组允许重复数字的随机数: NumRep <- sample(1:9, 480, replace=T) NumRep首先,问题失去了在该条件下进行模拟的“随机”方式。无论如何,此代码与第一个约束相对应: # Build a v
- 序列不能在一行中包含两个重复的数字李>
- 该序列必须在每80位数字序列(例如6 4 52483 4 69154 61)中恰好包含4个奇数序列和4个偶数序列(以任何顺序)李>
NumRep <- sample(1:9, 480, replace=T)
NumRep首先,问题失去了在该条件下进行模拟的“随机”方式。无论如何,此代码与第一个约束相对应:
# 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])
#构建一个向量
欢迎来到这里!发布问题时,请分享您的代码,并尽可能地解释您的问题。现在,你的要求还不清楚。谢谢你的回答,很抱歉我的回答不够清晰。关于你的第二点,你是说在480个数字的序列中,你必须能找到一行四个奇数(以偶数为界)和四个偶数(以赔率为界)?奇偶约束是,在每一个80位的序列中,我需要精确地表示4个3奇数序列和4个3偶数序列(例如6 4 5 2 4 8 3 6 9 1 5 6 1)。如果这有助于澄清问题,那么这是一个观察持续注意力的实验——每次显示一个数字,当参与者看到一行3个奇数或3个偶数时,他们必须按下按钮。所以我猜你永远不会希望一行中出现超过3个偶数/赔率的情况。按照顺序,你是指3个连续的奇数吗(偶数)数字?因为如果你想这样做,策略可能是首先构建这些序列,然后在其他不遵循此属性的数字之前和之后添加。