Random Numbers

Генерація випадкових чисел|Random Numbers #

// Пакет `math/rand` дозволяє реалізовувати генерацію
// [псевдовипадкових чисел](https://uk.wikipedia.org/wiki/Генератор_псевдовипадкових_чисел).

package main

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

func main() {

	// Наприклад, `rand.Intn` повертає випадкове ціле число в
	// діапазоні від нуля до n (`0 <= n < 100`).
	fmt.Print(rand.Intn(100), ",")
	fmt.Print(rand.Intn(100))
	fmt.Println()

	// А `rand.Float64` поверне випадкове число з плаваючою комою
	// (тип `float64`) в діапазоні, від нуля до 1-ці (`0.0 <= f < 1.0`).
	fmt.Println(rand.Float64())

	// Це може стати корисним для генерації чисел в діапазонах,
	// наприклад `5.0 <= f' < 10.0`.
	rand1 := (rand.Float64() * 5) + 5
	rand2 := (rand.Float64() * 5) + 5
	fmt.Println(rand1, ",", rand2)

	// Станадартний генератор чисел детермінований, отже він буде
	// видавати тіж самі послідовності чисел кожного разу.
	// Щоб отримати послідовності, які будуть мінятись, нам необхідно
	// надати початкове значення, або "seed" (як його ще називають).
	// Зауваження - це не дуже безпечно використовувати випадкові
	// числа які мають триматись в секреті, скористайтесь
	// пакетом `crypto/rand` якщо ваша ціль генерація більш
	// захищених даних.
	s1 := rand.NewSource(time.Now().UnixNano())
	r1 := rand.New(s1)

	// Виклик результатного `rand.Rand` проходить аналогічно
	// функціям пакету `rand`.
	fmt.Print(r1.Intn(100), ",")
	fmt.Print(r1.Intn(100))
	fmt.Println()

	// Якщо початковим значенням буде одне і теж число
	// результат, теж, буде однаковий для різних викликів генераторів.
	s2 := rand.NewSource(42)
	r2 := rand.New(s2)
	fmt.Print(r2.Intn(100), ",")
	fmt.Print(r2.Intn(100))
	fmt.Println()
	s3 := rand.NewSource(42)
	r3 := rand.New(s3)
	fmt.Print(r3.Intn(100), ",")
	fmt.Print(r3.Intn(100))
}
# Depending on where you run this sample, some of the
# generated numbers may be different. Note that on
# the Go playground seeding with `time.Now()` still
# produces deterministic results due to the way the
# playground is implemented.
$ go run random-numbers.go
81,87
0.6645600532184904
7.123187485356329,8.434115364335547
0,28
5,87
5,87


# Щоб отримати довідку по наявним методом
# генерації випадкових чисел - зверніть увагу
# на документацію пакету [`math/rand`](http://golang.org/pkg/math/rand/).