Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r创建伪随机列表_R - Fatal编程技术网

使用r创建伪随机列表

使用r创建伪随机列表,r,R,假设我有4个不同的值 intensities <- c(0.1,-0.1,0.05,-0.05) 强度可能是这样的 # seed set.seed(123) plus <- rep(intensities[intensities >= 0], each = 5) minus <- rep(intensities[intensities < 0], each = 5) out <- numeric(length(plus) + length(minus))

假设我有4个不同的值

intensities <- c(0.1,-0.1,0.05,-0.05)

强度可能是这样的

# seed
set.seed(123)

plus <- rep(intensities[intensities >= 0], each = 5)
minus <- rep(intensities[intensities < 0], each = 5)
out <- numeric(length(plus) + length(minus))
out[seq(1, length(out), 2)] <- sample(plus)
out[seq(2, length(out), 2)] <- sample(minus)
out
# [1]  0.10 -0.05  0.05 -0.10  0.10 -0.05  0.05 -0.05  0.05 -0.10  0.10 -0.05  0.05 -0.05  0.05 -0.10
# [17]  0.10 -0.10  0.10 -0.10
#种子
种子集(123)
加上=0],每个=5)

减去这是我的解决方案,它创建了一个自定义函数,参数
n
表示输出的长度。此外,
天花()
floor()
可以决定奇偶位置的长度

mySample <- function(x, n){
  res <- c()
  res[seq(1, n, 2)] <- sample(x[x >= 0], ceiling(n / 2), T)
  res[seq(2, n, 2)] <- sample(x[x < 0], floor(n / 2), T)
  return(res)
}

intensities <- c(0.1, -0.1, 0.05, -0.05)
mySample(intensities, 10)
# [1]  0.10 -0.10  0.05 -0.05  0.10 -0.05  0.05 -0.05  0.05 -0.10

mySample如果您要从中采样的强度列表是+/-对,您可以从正值列表中采样,然后更改绘制的每一个其他数字的符号:

N <- 5
positiveIntensities <- c(0.1, 0.05)
resultingList <- sample(positiveIntensities,N,replace = T) * (-1)^(0:(N-1))

N你所说的“每值随机抽样5次”是什么意思?如果从4个值中随机取样,则不能保证+/-负值将均匀分布。所以完全交替顺序可能是不可能的。我也想到了这一点。问题是,我们没有得到相同数量的负0.05和0.1值。我误解了这个约束。