Функция rand.ExpFloat64

Функция rand.ExpFloat64 генерирует случайное число с экспоненциальным распределением со средним значением 1. Она возвращает число с плавающей точкой типа float64. В отличие от равномерного распределения, которое генерирует функции rand.Float64 и rand.Float32, экспоненциальное распределение генерирует значения, которые чаще бывают маленькими, но иногда могут быть очень большими. Функция не принимает никаких параметров и использует текущий генератор случайных чисел.

Синтаксис

gorand.ExpFloat64()

Пример

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

gopackage main

import (
  "fmt"
  "math/rand"
  "time"
)

func main() {
  rand.Seed(time.Now().UnixNano())
  res := rand.ExpFloat64()
  fmt.Println(res)
}

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

go"0.8543214567890123"

Пример

Давайте сгенерируем несколько экспоненциально распределенных чисел и посмотрим на их распределение. Для этого сгенерируем 10 случайных чисел:

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

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

go"0.2345678901234567"
"1.3456789012345678"
"0.0123456789012345"
"2.4567890123456789"
"0.5678901234567890"
"0.7890123456789012"
"3.4567890123456789"
"0.1234567890123456"
"1.2345678901234567"
"0.4567890123456789"

Пример

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

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

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

go"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,
    которая возвращает случайную перестановку чисел