Julia while循环走得太远并给出错误消息

Julia while循环走得太远并给出错误消息,julia,Julia,我是朱莉娅的新手,我正在尝试制作一个简单的脚本来模拟人口增长。因此,在每一个时间步,种群增长如下:N(t+1)=N(t)(1+beta)。所以在每个时间步,我从泊松分布中取样,平均值由N(t+1)给出。我想在N达到最大值或达到0时停止。我在Julia中实现了这一点,但总体通常会超过我定义的最大值。此外,每当N->0时,我都会收到一条错误消息:ErrorException(“lambda必须为正”) 使用分布 新功能_pop(N) β=0.1 w_拟合=1 兰德(泊松(N*(1+w_-fit*be

我是朱莉娅的新手,我正在尝试制作一个简单的脚本来模拟人口增长。因此,在每一个时间步,种群增长如下:N(t+1)=N(t)(1+beta)。所以在每个时间步,我从泊松分布中取样,平均值由N(t+1)给出。我想在N达到最大值或达到0时停止。我在Julia中实现了这一点,但总体通常会超过我定义的最大值。此外,每当N->0时,我都会收到一条错误消息:ErrorException(“lambda必须为正”)

使用分布
新功能_pop(N)
β=0.1
w_拟合=1
兰德(泊松(N*(1+w_-fit*beta)))
结束
pop_S=10
波普_Max=100
while(pop_S0)
流行音乐=新流行音乐(流行音乐)
println(流行音乐)
结束

我想你可能想要
|
而不是
|
。单个条执行按位或,而两条条执行逻辑或。

因此,当包含附加条件pop\u S>0时,while循环仅会超调。因此,将其取出并在循环中使用带中断的if语句可以解决此问题。如果有人有任何想法的话,我很想知道为什么我最初的实现不起作用。试一下你的条件。
using Distributions
function new_pop(N)
        beta=0.1
        w_fit=1
        rand(Poisson(N*(1+w_fit*beta)))
        end

pop_S=10
pop_Max=100
while (pop_S<pop_Max | pop_S>0)
        pop_S=new_pop(pop_S)
        println(pop_S)
        end