public void Launch(IActor resultActor) { MonteCarloActor <long> .Cast((simnum, iteration, result) => { if (iteration <= 0) { return; } Random random = new Random((int)simnum); long population = 1; for (long i = 0; i < iteration; i++) { long newPopulation = 0; for (long p = 0; p < population; p++) { newPopulation += random.Next(4); } population = newPopulation; if (population <= 0) { break; } } result.SendMessage(population); }, 30, resultActor, 100000); }
public void Launch(long nbSimul) { MonteCarloActor <double> .Cast((simnum, itera, result) => { if (itera <= 0) { return; } Random random = new Random((int)simnum); double inDisc = 0; for (int i = 0; i <= itera; i++) { var x = random.NextDouble(); var y = random.NextDouble(); if (x *x + y *y <= 1.0) { inDisc++; } } result.SendMessage(itera, inDisc); }, 100000, this, nbSimul); }