private void ComputeStatistics() { var actuary = new Actuary(); NodeWalk.Walk(root, node => { node.Node.Optimize(); actuary.Track(node); }); actuary.Publish(); this.Statistics = actuary; }
public void SimulateCharacter(Character character, DateTime toDateTime, TRandom randomizer) { var totalMonths = 12 * LifeSimulator.DefaultTimePassageYears + LifeSimulator.DefaultTimePassageMonths; var totalYears = totalMonths / 12.0M; var deathPercentage = Actuary.DeathPercentage(character.Gender, character.AgeInYears(toDateTime)); var adjustedDeathPercentage = deathPercentage * totalYears; if (randomizer.NextDecimal() < adjustedDeathPercentage) { character.DateOfDeath = new RandomDateGenerator().GetRandomDate(character.DateSimulatedTo, toDateTime, randomizer); character.LifeLogs.Add(LifeLogFactories.BuildLog_Death(character)); } else { character.LifeLogs.Add(LifeLogFactories.BuildLog_Aged(character, toDateTime)); } character.DateSimulatedTo = toDateTime; }