api-qobiltu-dev / space /utils /shuffle.go
lifedebugger's picture
Deploy files from GitHub repository
6c0b3e3
package utils
import "math/rand"
// ShuffleWithKey mengacak slice dengan menggunakan integer key sebagai seed
// untuk memastikan hasil acak yang konsisten untuk key yang sama
func ShuffleWithKey[T any](slice []T, key int64) []T {
// Buat salinan slice untuk menghindari modifikasi original
shuffled := make([]T, len(slice))
copy(shuffled, slice)
// Buat random source dengan seed dari key
r := rand.New(rand.NewSource(key))
// Lakukan shuffling
r.Shuffle(len(shuffled), func(i, j int) {
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
})
return shuffled
}