Я пытаюсь понять, как использовать GCD для распараллеливания и ускорения моделирования Монте-Карло. Большинство/все простые примеры представлены для Objective C, и мне действительно нужен простой пример для Swift, поскольку Swift — мой первый «настоящий» язык программирования.
Минимальная рабочая версия симуляции методом Монте-Карло в Swift будет выглядеть примерно так:
import Foundation
import Cocoa
var winner = 0
var j = 0
var i = 0
var chance = 0
var points = 0
for j=1;j<1000001;++j{
var ability = 500
var player1points = 0
for i=1;i<1000;++i{
chance = Int(arc4random_uniform(1001))
if chance<(ability-points) {++points}
else{points = points - 1}
}
if points > 0{++winner}
}
println(winner)
Код работает непосредственно вставленным в проект программы командной строки в xcode 6.1.
Самый внутренний цикл не может быть распараллелен, так как новое значение переменной «точки» используется в следующем цикле. Но самое внешнее просто запускает самое внутреннее моделирование 1000000 раз и подсчитывает результаты и должно быть идеальным кандидатом на распараллеливание.
Итак, мой вопрос: как использовать GCD для распараллеливания самого внешнего цикла for?