- 437 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:03:03 ]
- 無駄に C# っぽさを追求してみた
class Program2 { static void Main(string[] args) { var sw = new Stopwatch(); sw.Start(); double pi = CalculatePI(1000000); sw.Stop(); Console.WriteLine(" expected: {0}", Math.PI); Console.WriteLine(" actual: {0}", pi); Console.WriteLine(" error rate: {0}", (pi - Math.PI) / Math.PI); Console.WriteLine("elapsed time: {0}", sw.Elapsed); } private static double CalculatePI(int trialCount) { int count = RandomPoints().Take(trialCount).Count(pt => (SqareSum(pt) < 1)); return 4.0 * count / trialCount; } private static IEnumerable<double[]> RandomPoints() { var r = new Random(); while(true) yield return new[] { r.NextDouble(), r.NextDouble() }; } private static double SqareSum(params double[] values) { return values.Sum(x => Math.Pow(x, 2)); } }
|

|