Функция rand.NormFloat64
Функция rand.NormFloat64 генерирует случайное число с нормальным распределением
(также известным как распределение Гаусса). Она не принимает никаких параметров
и возвращает значение типа float64. Генерируемые числа имеют среднее значение 0
и стандартное отклонение 1. Это означает, что большинство значений будут находиться
в диапазоне от -3 до 3, при этом значения, близкие к 0, встречаются чаще, чем
значения, удаленные от нуля.
Синтаксис
rand.NormFloat64()
Пример
Давайте сгенерируем одно случайное число с нормальным распределением:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
res := rand.NormFloat64()
fmt.Println(res)
}
Результат выполнения кода:
"0.3854712856178512"
Пример
Давайте сгенерируем несколько случайных чисел с нормальным распределением и посмотрим на их распределение:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
for i := 0; i < 10; i++ {
res := rand.NormFloat64()
fmt.Println(res)
}
}
Результат выполнения кода:
"0.3854712856178512"
"-0.24657302191144077"
"1.2458615230453457"
"-0.5678123456789012"
"0.9234567890123456"
"-1.2345678901234567"
"0.4567890123456789"
"-0.7890123456789012"
"1.567890123456789"
"-0.3456789012345678"
Пример
Давайте используем rand.NormFloat64 для моделирования нормально
распределенных значений с определенным средним и стандартным отклонением.
Для этого мы умножаем результат на желаемое стандартное отклонение и прибавляем
желаемое среднее:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
mean := 100.0
stddev := 15.0
for i := 0; i < 5; i++ {
res := mean + stddev*rand.NormFloat64()
fmt.Println(res)
}
}
Результат выполнения кода:
"105.45678901234567"
"98.34567890123456"
"112.56789012345678"
"95.67890123456789"
"102.34567890123456"
Смотрите также
-
функцию
rand.Float64,
которая генерирует равномерно распределенное число в диапазоне [0, 1) -
функцию
rand.ExpFloat64,
которая генерирует число с экспоненциальным распределением -
функцию
rand.Intn,
которая генерирует случайное целое число в диапазоне [0, n) -
функцию
rand.Perm,
которая возвращает случайную перестановку чисел из диапазона [0, n)