diff --git a/core/math/rand/rand.odin b/core/math/rand/rand.odin index f7dfcb3b8..2d92d29ff 100644 --- a/core/math/rand/rand.odin +++ b/core/math/rand/rand.odin @@ -182,3 +182,12 @@ shuffle :: proc(array: $T/[]$E, r: ^Rand = nil) { array[i], array[j] = array[j], array[i] } } + +// Returns a random element from the given slice +choice :: proc(array: $T/[]$E, r: ^Rand = nil) -> (res: E) { + n := i64(len(array)) + if n < 1 { + return E{} + } + return array[int63_max(n, r)] +} \ No newline at end of file