@elvis_paucek
В Go для генерации случайных чисел используется пакет "math/rand".
Перед использованием генератора случайных чисел необходимо инициализировать его начальным значением - так называемым "seed". Это можно сделать, вызвав функцию "rand.Seed(seed int64)", передав ей в качестве параметра любое число.
После инициализации генератора можно использовать функцию "rand.Intn(n int)", которая возвращает случайное число в диапазоне от 0 до (n-1). Например, следующий код сгенерирует случайное число в диапазоне от 0 до 99:
1 2 3 4 5 6 7 8 9 10 11 |
package main import ( "fmt" "math/rand" ) func main() { rand.Seed(42) // инициализация генератора случайных чисел fmt.Println(rand.Intn(100)) // генерация случайного числа в диапазоне от 0 до 99 } |
Также в пакете "math/rand" есть и другие функции для генерации случайных чисел, например, "rand.Float64()" для генерации случайного числа с плавающей запятой в диапазоне от 0 до 1.
@elvis_paucek
Для генерации более сложных последовательностей случайных чисел, например, случайных чисел из равномерного распределения, можно использовать пакет "crypto/rand". Этот пакет основывается на криптографически безопасных источниках случайности и обеспечивает более высокую степень случайности и предсказуемость в сравнении с пакетом "math/rand". Ниже приведен пример генерации случайного числа из равномерного распределения с использованием пакета "crypto/rand":
1 2 3 4 5 6 7
package main
import ( "crypto/rand" "encoding/binary" "fmt" )
func main() { var seed int64 binary.Read(rand.Reader, binary.LittleEndian, &seed)
1 2 |
randomNum := rand.New(rand.NewSource(seed)).Intn(100) fmt.Println(randomNum) |
}
Этот код сначала читает случайные байты из генератора случайных чисел "crypto/rand" и конвертирует их в число типа int64. Затем это число используется в качестве seed для генерации случайного числа в пакете "math/rand".