1
- //Double Extension from YannickSteph on StackOverflow: https://stackoverflow.com/questions/25050309/swift-random-float-between-0-and-1
2
-
3
- import Foundation
4
-
5
- public extension Double {
6
- public static var random : Double {
7
- return Double ( arc4random ( ) ) / 0xFFFFFFFF // Returns a random double between 0.0 and 1.0, inclusive.
8
- }
9
-
10
- public static func random( min: Double , max: Double ) -> Double {
11
- return Double . random * ( max - min) + min
12
- }
13
- }
14
-
15
- func isInCircle( x: Double , y: Double , radius: Double ) -> Bool {
1
+ func inCircle( x: Double , y: Double , radius: Double ) -> Bool {
16
2
return ( x*x) + ( y*y) < radius*radius
17
3
}
18
4
@@ -21,16 +7,16 @@ func monteCarlo(n: Int) -> Double {
21
7
var piCount = 0
22
8
var randX : Double
23
9
var randY : Double
24
-
10
+
25
11
for _ in 0 ... n {
26
- randX = Double . random ( min : 0 , max : radius)
27
- randY = Double . random ( min : 0 , max : radius)
28
-
29
- if ( isInCircle ( x: randX, y: randY, radius: radius) ) {
12
+ randX = Double . random ( in : 0 ..< radius)
13
+ randY = Double . random ( in : 0 ..< radius)
14
+
15
+ if ( inCircle ( x: randX, y: randY, radius: radius) ) {
30
16
piCount += 1
31
17
}
32
18
}
33
-
19
+
34
20
let piEstimate = Double ( 4 * piCount) / ( Double ( n) )
35
21
return piEstimate
36
22
}
@@ -41,6 +27,4 @@ func main() {
41
27
print ( " Percent error is: \( 100 * abs( piEstimate - Double. pi) / Double. pi) % " )
42
28
}
43
29
44
-
45
30
main ( )
46
-
0 commit comments