ฉันกำลังพยายามคิดว่าจะใช้ GCD อย่างไรเพื่อขนานและเร่งความเร็วการจำลองมอนติคาร์โล มีการนำเสนอตัวอย่างง่ายๆ ส่วนใหญ่/ทั้งหมดสำหรับ Objective C และฉันต้องการตัวอย่างง่ายๆ สำหรับ Swift เนื่องจาก Swift เป็นภาษาโปรแกรม "จริง" ภาษาแรกของฉัน
เวอร์ชันการทำงานขั้นต่ำของการจำลอง Monte Carlo ใน 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
ลูปด้านในสุดไม่สามารถขนานได้เนื่องจากค่าใหม่ของตัวแปร "จุด" จะถูกนำมาใช้ในการวนซ้ำถัดไป แต่ส่วนนอกสุดเพียงรันการจำลองด้านในสุด 1000,000 ครั้งและนับรวมผลลัพธ์ และควรเป็นตัวเลือกที่เหมาะสมที่สุดสำหรับการทำขนาน
ดังนั้นคำถามของฉันคือจะใช้ GCD เพื่อขนานส่วนนอกสุดของ for loop ได้อย่างไร