Треки
/
Go
Go
/
Салабус
/
Випадковість
Ви

Випадковість у Go

2 вправи

Про концепцію Випадковість

Пакет math/rand надає підтримку для генерування псевдовипадкових чисел.

Ось як згенерувати випадкове ціле число від 0 до 99:

import "math/rand"

n := rand.Intn(100) // n is a random int, 0 <= n < 100

Функція rand.Float64 повертає випадкове число з плаваючою комою від 0.0 до 1.0:

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

Є також підтримка перемішування зрізу (або інших структур даних):

x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
	x[i], x[j] = x[j], x[i]
})

Початкове значення

Послідовності чисел, які генерує пакет math/rand, не є справді випадковими. Якщо задати конкретне «початкове значення», результати будуть повністю детермінованими.

У Go 1.20+ початкове значення обирається випадково автоматично, тож щоразу, коли ми запускаємо програму, послідовність випадкових чисел буде іншою.

У попередніх версіях Go початкове значення типово дорівнювало 1. Тож щоб отримувати різні послідовності під час різних запусків програми, потрібно було вручну задати початкове значення генератору випадкових чисел, наприклад, поточним часом, перш ніж отримувати будь-які випадкові числа.

rand.Seed(time.Now().UnixNano())
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Випадковість

Практика заблокована

Розблокуйте ще 2 вправи, щоб практикувати концепцію Випадковість