コード例 #1
0
        private static void WriteResult(List <Algorithms.SimulationResult> results, TimeSpan durationSinceStart, TextWriter outputStream)
        {
            Algorithms.SimulationResult overallResult = new Algorithms.SimulationResult(0, 0);
            foreach (var result in results)
            {
                overallResult += result;
            }

            outputStream.WriteLine(
                $"iterations={overallResult.TotalSimulations:n0}; goodLists={(overallResult.TotalSimulations - overallResult.TotalCollisions):n0}; collision probability={(overallResult.CollisionProbability):P5}; iteration/sec={(overallResult.TotalSimulations / durationSinceStart.TotalSeconds):n0}; total time={durationSinceStart.TotalSeconds:n}s");
        }
コード例 #2
0
        public async Task <SimulationResult> StartSimulationAsync(Clip[] sourceClips)
        {
            // Error if running
            if (null != _cancelTokenSource)
            {
                throw new InvalidOperationException("Simulation already running. Please stop before restarting.");
            }

            _cancelTokenSource = new System.Threading.CancellationTokenSource();
            _result            = new SimulationResult();

            return(await Task.Run <SimulationResult>(() =>
            {
                SimulateMonteCarlo(sourceClips, _cancelTokenSource.Token);
                return this.CurrentResult;
            },
                                                     _cancelTokenSource.Token));
        }