From 0d881e1561d62065a6c702c3eabadc253a8f2bc6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 16 Jul 2024 18:36:31 +0100 Subject: [PATCH] Improve rand.shuffle further by splitting into 64-bit and 32-bit parts --- core/math/rand/rand.odin | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/math/rand/rand.odin b/core/math/rand/rand.odin index 4f736985f..e02f3db80 100644 --- a/core/math/rand/rand.odin +++ b/core/math/rand/rand.odin @@ -618,10 +618,16 @@ shuffle :: proc(array: $T/[]$E, gen := context.random_generator) { return } - for i := i64(n - 2); i >= 0; i -= 1 { + i := n - 1 + for ; i > (1<<31 - 2); i -= 1 { j := int63_max(i + 1, gen) array[i], array[j] = array[j], array[i] } + + for ; i > 0; i -= 1 { + j := int31_max(i32(i + 1), gen) + array[i], array[j] = array[j], array[i] + } } /*