You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言种群模拟初始环境随机采样失效问题求助

问题原因

你代码里的初始环境采样逻辑是有效的,但输出结果的第0代(初始状态)环境被硬编码成了1,导致你误以为每次初始环境都是环境1。具体看simulate_pop_new函数里这一行:

pop_vector <- c(N_total_init,N_init_wt, N_init_generalist, N_init_specialist, 1)

这里最后一个值固定写了1,而非你随机采样得到的env_temp,所以输出的初始行环境永远是1,但实际模拟使用的初始环境是env_temp的随机值,只是没记录到输出结果里。

修复方案

把初始pop_vector的环境值替换为env_temp,同时调整代码顺序让逻辑更连贯,修改后的函数核心片段如下:

simulate_pop_new <- function(K, N_total_init,N_init_wt, 
                             growth_vec1, growth_vec2, growth_vec3, 
                             mut_rate, switch_prob) {
  # 初始无突变体
  N_init_generalist <- 0
  N_init_specialist <- 0
  # 先采样初始环境
  env_temp <- sample(1:2, size = 1, replace = T)
  # 初始化结果向量,使用随机采样的初始环境
  pop_vector <- c(N_total_init,N_init_wt, N_init_generalist, N_init_specialist, env_temp)
  # 初始化种群变量
  pop_new <- c(N_total_init, N_init_wt, N_init_generalist, N_init_specialist)
  tmax <- 1000
  j <- 0

  # 后续循环逻辑保持不变...
}
验证方式

修改后多次运行simulate_pop_new函数,查看输出结果的第0行env列,会看到环境值随机在1和2之间切换,符合预期。

内容的提问来源于stack exchange,提问作者Tiny Lebowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:31:08