package lib import ( "math/rand" ) // RandomSubsetOfLength: Given an array of nodes generate of random // subset of 'num' length. func RandomSubsetOfLength[V any](vs []V, num int) []V { randomSubset := make([]V, 0) selectedIndices := make(map[int]struct{}) for i := 0; i < num; { if len(randomSubset) == len(vs) { return randomSubset } randomIndex := rand.Intn(len(vs)) if _, ok := selectedIndices[randomIndex]; !ok { randomSubset = append(randomSubset, vs[randomIndex]) selectedIndices[randomIndex] = struct{}{} i++ } } return randomSubset }