Add shuffle to math module

This commit is contained in:
def
2015-01-02 22:26:43 +01:00
parent 232dba8f95
commit d57d1f00cd

View File

@@ -284,6 +284,14 @@ proc random[T](a: openArray[T]): T =
## returns a random element from the openarray `a`.
result = a[random(a.low..a.len)]
proc shuffle[T](a: var openArray[T]) =
## Shuffles the elements in `a`. Note that ``randomize`` needs to be called
## to initialize the random number generator, otherwise ``shuffle`` always
## shuffles in the same way.
for i in countdown(a.high, 0):
let j = random(i + 1)
swap(a[i], a[j])
type
RunningStat* = object ## an accumulator for statistical data
n*: int ## number of pushed data