Generatori slučajnih brojeva, u skoro svim programskim jezicima i računarskim okruženjima na kojima se programi izvršavaju, generišu nizove pseudo-slučajnih brojeva. Da bi brojevi koje od njih dobijamo bili makar prividno slučajni, beneratori slučajnih brojeva se moraju inicijalizovati nekom slučajnom vrednošću pre početka njihovog korišćenja. Ta inicijalizacija se u Go-u najbolje sprovodi sledećim pozivom funkcije rand.Seed:
rand.Seed(time.Now().UnixNano())
Ovaj poziv kao slučajni broj za inicijalizaciju uzima “trenutak” u kome je program izvršio funkciju rand.Seed. Ukoliko ne pozovemo funkciju rand.Seed, ili je svaki put pozivamo sa istom vrednošću, naš program će pri svakom izvršavanju dobijati istu sekvencu slučajnih brojeva, i tu više ništa neće biti slučajno u odnosu na prethodno izvršavanje programa.
Pošto smo u ranije prikazanom primeru 2, kao i u primeru 4, imali osam poziva funkcije rand.IntN bez inicijalizacije generatora slučajnih brojeva, za očekivati je da smo u oba primera dobili istu sekvencu “slučajnih” brojeva. Međutim, ono što su programi generisali kao rezultat, bar na prvi pogled, ne izgleda isto:
8 [. . . . ♛ . . .] 8 [. ♛ ♛ . . . . .] 7 [. ♛ . . . . . .] 7 [. . . . . ♛ . .] 6 [. . . . . . ♛ .] 6 [. . . . . . . .] 5 [. ♛ . . . . . .] 5 [. . . . . . . ♛] 4 [. . . ♛ . . . .] 4 [. . . ♛ . . . .] 3 [. . . . . . . ♛] 3 [. . . . . . . .] 2 [. . . . . . . ♛] 2 [♛ . . . ♛ . ♛ .] 1 [. ♛ . . . . . .] 1 [. . . . . . . .] a b c d e f g h a b c d e f g h [1 7 7 3 1 6 1 4]
Levo je rezultat programa iz primera 2, desno ono što smo dobili programom iz primera 4.
Pitanje za razmišljanje je “Da li su ova dva prikaza nastala na osnovu iste sekvence pseudoslučajnih brojeva? Ako jesu – objasniti zašto ne izgledaju isto.”
8 [. . . . H . . .] 8 [. B C . . . . .] 7 [. G . . . . . .] 7 [. . . . . F . .] 6 [. . . . . . F .] 6 [. . . . . . . .] 5 [. E . . . . . .] 5 [. . . . . . . H] 4 [. . . D . . . .] 4 [. . . D . . . .] 3 [. . . . . . . C] 3 [. . . . . . . .] 2 [. . . . . . . B] 2 [A . . . E . G .] 1 [. A . . . . . .] 1 [. . . . . . . .] a b c d e f g h a b c d e f g h [1 7 7 3 1 6 1 4]
Očigledno je da poziv funkcije rand.Seed u primeru 4 treba osloboditi komentara.