Created
June 28, 2016 09:20
-
-
Save benloong/00be034d273786a56ca0a7b430fa578c to your computer and use it in GitHub Desktop.
Array random take extension
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
extension Array { | |
func random2(_ lower: Int, _ upper: Int) -> Int { | |
return random() % (upper - lower) + lower | |
} | |
func randomTake<T>(_ n: Int) -> [T] { | |
var take = [T]() | |
var index = 0 | |
for x in self { | |
if index < n { | |
take.append(x as! T) | |
} | |
else { | |
let pos = random2(0, index) | |
if pos < n { | |
take[pos] = x as! T | |
} | |
} | |
index += 1 | |
} | |
return take | |
} | |
mutating func shuffle () { | |
for i in 0 ..< self.endIndex - 2 { | |
let x = random2(i, self.endIndex) | |
//let x = random2(0, i+3) | |
let temp = self[i] | |
self[i] = self[x] | |
self[x] = temp | |
} | |
} | |
mutating func shuffle2 (){ | |
for _ in 0 ..< self.endIndex { | |
let x = random2(0, self.endIndex) | |
let y = random2(0, self.endIndex) | |
let temp = self[x] | |
self[x] = self[y] | |
self[y] = temp | |
} | |
} | |
} | |
var list : [Int] = [0,1,2,3,4,5,6,7,8,9] | |
var count : [[Int]] = [] | |
for x in 0 ..< 10 { | |
count.append([0,0,0,0,0,0,0,0,0,0]) | |
} | |
for x in 0..<50 { | |
list.shuffle() | |
for x in 0 ..< list.endIndex { | |
count[x][list[x]] += 1 | |
} | |
} | |
for x in 0 ..< 10 { | |
print(count[x]) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment