From a51943e27f625552c4a56ec7389ff2d06e8c7a8d Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sun, 23 Oct 2022 04:18:58 +0200 Subject: [PATCH] Add `core:math/rand.choice` --- core/math/rand/rand.odin | 9 +++++++++ 1 file changed, 9 insertions(+) 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