Функция rand.ExpFloat64
Функция rand.ExpFloat64 генерирует случайное число с экспоненциальным распределением со средним значением 1. Она возвращает число с плавающей точкой типа float64. В отличие от равномерного распределения, которое генерирует функции rand.Float64 и rand.Float32, экспоненциальное распределение генерирует значения, которые чаще бывают маленькими, но иногда могут быть очень большими. Функция не принимает никаких параметров и использует текущий генератор случайных чисел.
Синтаксис
rand.ExpFloat64()
Пример
Давайте сгенерируем экспоненциально распределенное случайное число и выведем его на экран:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
res := rand.ExpFloat64()
fmt.Println(res)
}
Результат выполнения кода:
"0.8543214567890123"
Пример
Давайте сгенерируем несколько экспоненциально распределенных чисел и посмотрим на их распределение. Для этого сгенерируем 10 случайных чисел:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
for i := 0; i < 10; i++ {
res := rand.ExpFloat64()
fmt.Println(res)
}
}
Результат выполнения кода:
"0.2345678901234567"
"1.3456789012345678"
"0.0123456789012345"
"2.4567890123456789"
"0.5678901234567890"
"0.7890123456789012"
"3.4567890123456789"
"0.1234567890123456"
"1.2345678901234567"
"0.4567890123456789"
Пример
Давайте используем экспоненциально распределенное число для моделирования времени между событиями в пуассоновском процессе. Для этого сгенерируем интервалы времени между событиями:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
time := 0.0
for i := 0; i < 5; i++ {
interval := rand.ExpFloat64()
time += interval
fmt.Printf("Event %d at time: %f\n", i+1, time)
}
}
Результат выполнения кода:
"Event 1 at time: 0.854321"
"Event 2 at time: 1.987654"
"Event 3 at time: 2.123456"
"Event 4 at time: 4.567890"
"Event 5 at time: 5.012345"
Смотрите также
-
функцию
rand.Float64,
которая генерирует случайное число с равномерным распределением -
функцию
rand.NormFloat64,
которая генерирует случайное число с нормальным распределением -
функцию
rand.Intn,
которая генерирует случайное целое число в заданном диапазоне -
функцию
rand.Perm,
которая возвращает случайную перестановку чисел