Функция rand.Perm

Функция rand.Perm генерирует случайную перестановку целых чисел. Она принимает один параметр n — количество элементов в перестановке, и возвращает слайс []int длины n, содержащий числа от 0 до n-1 в случайном порядке. Каждое число встречается в слайсе ровно один раз.

Синтаксис

gorand.Perm(n)

Пример

Давайте сгенерируем перестановку из 5 чисел:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  res := rand.Perm(5)
  fmt.Println(res)
}

Результат выполнения кода (будет случайным):

go[2 4 1 3 0]

Пример

Давайте сгенерируем перестановку из 3 чисел и выведем каждый элемент отдельно:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  res := rand.Perm(3)
  for i, v := range res {
    fmt.Printf("res[%d] = %d\n", i, v)
  }
}

Результат выполнения кода:

go"res[0] = 1"
"res[1] = 0"
"res[2] = 2"

Пример

Используем rand.Perm для создания случайного порядка элементов из существующего слайса:

gopackage 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)
}

Результат выполнения кода (будет случайным):

go[d e a c b]

Смотрите также

  • функцию rand.Shuffle,
    которая перемешивает элементы слайса в случайном порядке
  • функцию rand.Intn,
    которая возвращает случайное целое число в заданном диапазоне
  • функцию rand.Int,
    которая возвращает случайное целое число
  • функцию rand.Float64,
    которая возвращает случайное число с плавающей точкой