import Foundation func randomGaussian() -> Double { var u1 = 0.0 var u2 = 0.0 // Avoid log(0) repeat { u1 = Double.random(in: 0.0 ..< 1.0) } while u1 == 0.0 u2 = Double.random(in: 0.0 ..< 1.0) return sqrt(-2.0 * log(u1)) * cos(2.0 * Double.pi * u2) } print("Uniform integers in [1, 6]") for _ in 0..<10 { print(Int.random(in: 1...6)) } print("Uniform doubles in [0.0, 1.0)") for _ in 0..<10 { print(Double.random(in: 0.0 ..< 1.0)) } print("Standard Normal") for _ in 0..<10 { print(randomGaussian()) }