Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
42
Programowanieasynchroniczne
Listing2.1.DefnicjaklasyMonteCarloimplementującejalgorytmszacowaniawartości
liczby
p
metodąMonteCarlo
usingSystem;
namespaceMonteCarloPi
{
publicstaticclassMonteCarlo
{
privatestaticRandomrandomNumberGenerator;
privatestaticdoubleradius=1.0d;
staticMonteCarlo()
{
randomNumberGenerator=newRandom();
}
publicstaticdoubleEstimatePi(longrandomPointsCount)
{
CheckRandomPointsCount(randomPointsCount);
doubleresult=0.0d;
longpointsInsideCircleCount=0;
for(longi=0;i<randomPointsCount;i++)
{
doublex=randomNumberGenerator.NextDouble();
doubley=randomNumberGenerator.NextDouble();
if(Distance(x,y)<=radius)
{
pointsInsideCircleCount++;
}
}
if(randomPointsCount>0)
{
result=4.0d*pointsInsideCircleCount/
randomPointsCount;
}
returnresult;
}
publicstaticdoubleEstimationError(doubleestimatedValue)
{
returnMath.Abs(estimatedValue-Math.PI);
}