Skip to content

Instantly share code, notes, and snippets.

@benloong
Created June 28, 2016 09:20
Show Gist options
  • Save benloong/00be034d273786a56ca0a7b430fa578c to your computer and use it in GitHub Desktop.
Save benloong/00be034d273786a56ca0a7b430fa578c to your computer and use it in GitHub Desktop.
Array random take extension
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