Go의 |
|
package main
|
|
import "time"
import "fmt"
import "math/rand"
|
|
func main() {
|
|
예를 들어, |
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
|
|
fmt.Println(rand.Float64())
|
다음은 다른 범위, 예를 들면 |
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
|
기본 숫자 생성기는 결정적이기 때문에, 기본적으로 매번 동일한 순서의 시퀀스를 생성합니다. 다양한 시퀀스를 생성하기 위해선, 변화하는 시드값을 주어야합니다. 참고로 이는 비밀로 하려는 랜덤수를 생성하는데에는 안전하지 않으며, 이럴땐 |
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
|
|
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))
}
|
$ go run random-numbers.go
81,87
0.6645600532184904
7.123187485356329,8.434115364335547
0,28
5,87
5,87
|
|
Go가 제공하는 다른 랜덤에 대한 참고 자료는 |
다음 예제: 숫자 파싱.