Add Random.shuffle().

This commit is contained in:
Bob Nystrom
2016-02-07 10:38:39 -08:00
parent 79558d95e5
commit d4a4b26203
4 changed files with 67 additions and 0 deletions
+12
View File
@@ -46,4 +46,16 @@ foreign class Random {
foreign int()
int(end) { (float() * end).floor }
int(start, end) { (float() * (end - start)).floor + start }
shuffle(list) {
if (list.isEmpty) return
// Fisher-Yates shuffle.
for (i in 0...list.count - 1) {
var from = int(i, list.count)
var temp = list[from]
list[from] = list[i]
list[i] = temp
}
}
}
+12
View File
@@ -48,4 +48,16 @@ static const char* randomModuleSource =
" foreign int()\n"
" int(end) { (float() * end).floor }\n"
" int(start, end) { (float() * (end - start)).floor + start }\n"
"\n"
" shuffle(list) {\n"
" if (list.isEmpty) return\n"
"\n"
" // Fisher-Yates shuffle.\n"
" for (i in 0...list.count - 1) {\n"
" var from = int(i, list.count)\n"
" var temp = list[from]\n"
" list[from] = list[i]\n"
" list[i] = temp\n"
" }\n"
" }\n"
"}\n";