Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protocol RandomNumberGenerator {
- func random() -> Double
- }
- class LinearCongruentialGenerator : RandomNumberGenerator {
- var lastRandom = 42.0
- let m = 139969.0
- let a = 3877.0
- let c = 29573.0
- func random() -> Double {
- lastRandom = ((lastRandom * a + c) % m)
- return lastRandom / m
- }
- }
- class Dice {
- let sides: Int
- let generator: RandomNumberGenerator
- init(sides: Int, generator: RandomNumberGenerator) {
- self.sides = sides
- self.generator = generator
- }
- func roll() -> Int {
- return Int(generator.random() * Double(sides
- )) + 1
- }
- }
- let dice = Dice(sides: 6, generator: LinearCongruentialGenerator())
- dice.roll()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement