program population; const total = 100; { Number of people in population} stages = 15; { Number of stages} Numsim = 5; {Number of simulations} count = 3; {Number of encounters per stage} tol = 0.28; {if sum on dice is less than 5 and person interacts with infected person, infection occurs} var y: array[1..total] of integer; {Y holds the infection status of population} a: array[1..stages,1..Numsim] of integer; {a holds the number of infected people at each stage} sim,i,j,k,m,n,inner: integer; {each column of a is one simulation} FileName : string; {Will record the output into OutFile you specify} OutFile: Text; function Sum: integer; var i,result : integer; begin result := 0; For i := 1 to total Do result := result + y[i]; Sum := result; {sum is the summation of 1's in y} end; begin write('Enter Name of output File: '); Readln(FileName); Assign(OutFile,FileName+'.txt'); Rewrite(OutFile); For sim := 1 to NumSim do {Do the simulation 5 times} begin Randomize; for n := 1 to total do y[n] := 0; {all people start out healthy (healthy - 0)} y[5] := 1; {An infected person!} for k := 1 to stages do a[k,sim] := 0; {a[k,sim] is the number of infected people at stage k, simulation sim} for k := 1 to stages do {begin simulation for each stage} begin for inner := 1 to count do {each person has count encounters per stage} begin for n := 1 to total do {individual n interacts with another person} begin m := trunc(total*Random) + 1; if y[m] = 1 then {if individual m is infected} if y[n] = 0 then {if individual n is not infected} if random < tol then {if random number is less than tolerance} y[n] := 1; {individual n is now infected!} end; {loop on n} end; {loop on inner} a[k,sim] := sum; {sum the number of people infected at this stage} end; {loop on k (stage)} end; {loop on sim} for i:= 1 to stages do begin for j := 1 to sim do write(OutFile,a[i,j],','); writeln(OutFile); end; Close(OutFile); end.