Ошибки при работе с псевдослучайной генерации чисел (Golang)
Код -
package main
import (
"fmt"
"math/rand"
"time"
)
func randInt(max int) int {
return rand.Intn(max)
}
var ID = randInt(1000000)
func main() {
rand.Seed(time.Now().UTC().UnixNano() + 1)
for i := 0; i < 10; i++ {
fmt.Println(ID)
}
}
После выполнения всегда выводит единое значение, а точнее 498081.
При этом, если, return rand.Intn(max), изменить на return rand.Intn(max+1)
Значение на выходе 496783.
Как и почему так происходит? Может дело в seed, или в том, что я задал лишь одну переменную..Но тогда почему всегда одно значение? Как тогда делать правильно?
Ответы (1 шт):
Автор решения: Artem.Cyou
→ Ссылка
Тебе нужно переменную с функцией randInt засунуть в цикл иначе ты просто выводишь 10 раз одно и тоже число, а если она будет в цикле, то у нее будет каждый раз новое значение.
package main
import (
"fmt"
"math/rand"
"time"
)
func randInt(max int) int {
return rand.Intn(max)
}
func main() {
rand.Seed(time.Now().UTC().UnixNano() + 1)
for i := 0; i < 10; i++ {
iD:= randInt(1000000)
fmt.Println(iD)
}
}