Функция rand.Perm
Функция rand.Perm генерирует случайную перестановку целых чисел.
Она принимает один параметр n — количество элементов в перестановке,
и возвращает слайс []int длины n, содержащий числа
от 0 до n-1 в случайном порядке. Каждое число
встречается в слайсе ровно один раз.
Синтаксис
rand.Perm(n)
Пример
Давайте сгенерируем перестановку из 5 чисел:
package main
import (
"fmt"
"math/rand"
)
func main() {
res := rand.Perm(5)
fmt.Println(res)
}
Результат выполнения кода (будет случайным):
[2 4 1 3 0]
Пример
Давайте сгенерируем перестановку из 3 чисел и выведем каждый элемент отдельно:
package main
import (
"fmt"
"math/rand"
)
func main() {
res := rand.Perm(3)
for i, v := range res {
fmt.Printf("res[%d] = %d\n", i, v)
}
}
Результат выполнения кода:
"res[0] = 1"
"res[1] = 0"
"res[2] = 2"
Пример
Используем rand.Perm для создания случайного порядка элементов
из существующего слайса:
package main
import (
"fmt"
"math/rand"
)
func main() {
original := []string{"a", "b", "c", "d", "e"}
perm := rand.Perm(len(original))
shuffled := make([]string, len(original))
for i, index := range perm {
shuffled[i] = original[index]
}
fmt.Println(shuffled)
}
Результат выполнения кода (будет случайным):
[d e a c b]
Смотрите также
-
функцию
rand.Shuffle,
которая перемешивает элементы слайса в случайном порядке -
функцию
rand.Intn,
которая возвращает случайное целое число в заданном диапазоне -
функцию
rand.Int,
которая возвращает случайное целое число -
функцию
rand.Float64,
которая возвращает случайное число с плавающей точкой