Функция rand.Read
Функция rand.Read заполняет переданный ей слайс байтов
случайными значениями. Она принимает один параметр - слайс
[]byte. В качестве результата функция возвращает
количество записанных байтов и ошибку, которая всегда равна
nil. Функция использует глобальный генератор
случайных чисел из пакета rand.
Синтаксис
rand.Read(p []byte) (n int, err error)
Пример
Давайте заполним слайс из 5 байтов случайными значениями:
package main
import (
"fmt"
"math/rand"
)
func main() {
slice := make([]byte, 5)
n, err := rand.Read(slice)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Read %d bytes: %v\n", n, slice)
}
Результат выполнения кода:
"Read 5 bytes: [123 45 67 89 12]"
Пример
Давайте заполним слайс из 10 байтов и проверим количество записанных байтов:
package main
import (
"fmt"
"math/rand"
)
func main() {
buf := make([]byte, 10)
n, err := rand.Read(buf)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Bytes read:", n)
fmt.Printf("Data: %v\n", buf)
}
Результат выполнения кода:
"Bytes read: 10"
"Data: [200 150 45 78 23 167 89 34 56 12]"
Пример
Давайте заполним слайс с использованием локального генератора
rand.Rand:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
source := rand.NewSource(time.Now().UnixNano())
rng := rand.New(source)
data := make([]byte, 8)
n, err := rng.Read(data)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Generated %d random bytes: %v\n", n, data)
}
Результат выполнения кода:
"Generated 8 random bytes: [45 123 67 89 34 12 200 150]"
Смотрите также
-
функцию
rand.Float64,
которая возвращает случайное число с плавающей точкой -
функцию
rand.Int,
которая возвращает случайное целое число -
функцию
rand.Intn,
которая возвращает случайное число в заданном диапазоне -
функцию
rand.Seed,
которая инициализирует генератор случайных чисел