A simple discrete model for population growth

Direct simulation

T = 100;
β = 0.1;
pop0 = 100;
pops = {{0,pop0}};

SeedRandom[2];

Do[
pop = Last[pops][[2]];
Print[pop];
births = 0;
Do[
If[RandomReal[]<β,
births = births+1
],
{i,1,pop}
];
AppendTo[pops,{t,pop+births}],
{t,1,T}
];

Plotting the results

dataplot =
ListPlot[
Take[pops,T+1],
PlotStyle->Red
]

Plotting the results with the expected values

functionplot =
Plot[
pop0*(1+β)^t,{t,0,T},
PlotStyle->Blue
];
Show[
functionplot,dataplot
]

Timing the direct simulation

T = 100;
β = 0.1;
pop0 = 100;
pops = {{0,pop0}};

SeedRandom[7];

start = AbsoluteTime[];
Do[
pop = Last[pops][[2]];
Print[pop," ",AbsoluteTime[]-start];
births = 0;
Do[
If[RandomReal[]<β,
births = births+1
],
{i,1,pop}
];
AppendTo[pops,{t,pop+births}],
{t,1,T}
];

Timing the binomial distribution simulation

T = 100;
β = 0.1;
pop0 = 100;
pops = {{0,pop0}};

SeedRandom[7];

start = AbsoluteTime[];
Do[
pop = Last[pops][[2]];
Print[pop," ",AbsoluteTime[]-start];
births = 
RandomInteger[BinomialDistribution[pop,β]];
AppendTo[pops,{t,pop+births}],
{t,1,T}
];