Go 언어 math/rand 알아보기
오늘은 Go 언어 기본 패키지에 포함되있는 math/rand로 랜덤을 수행하는 실습을 해보려 합니다.
package main
import (
"math/rand"
"time"
"fmt"
"strings"
)
난수를 만들어내는 math/rand 패키지를 가져오며, 유닉스 시간의 나노초로 시드를 만들기 위한 time 패키지도 가져옵니다.
출력을 위해 fmt 패키지도 가져옵니다.
func main() {
rand.Seed(time.Now().UnixNano())
유닉스 시간을 나노초로 나타내는 수치를 시드로 삼아줍니다.
fmt.Println(rand.Intn(100))
fmt.Println(rand.Int())
fmt.Println(rand.Int31())
fmt.Println(rand.Int63())
fmt.Println(rand.Float32())
fmt.Println(rand.Float64())
fmt.Println(rand.Uint32())
fmt.Println(rand.Uint64())
Intn으로 수를 지정하여 int 범위안에 0부터 해당 수까지만 나오게 할 수 있습니다.
그 외로 Int31, Int63 처럼 각각 31비트, 63비트 정수를 반환 함수가 있습니다.
Float32, Float64는 각각 0.0부터 1.0 범위의 수들을 Float형으로 반환합니다.
Uint32, Uint64도 마찬가지로 각각 Uint32, Uint64 형식으로 반환합니다.
randomShuffle := strings.Fields("hello, world! gopher?")
rand.Shuffle(len(randomShuffle), func(i, j int) {
randomShuffle[i], randomShuffle[j] = randomShuffle[j], randomShuffle[i]
})
fmt.Println(randomShuffle)
}
문자열의 각 단어들을 나누어서 Shuffle을 수행했습니다.
Shuffle 함수의 두번째 인자에는 swap 함수가 들어가므로, i와 j를 서로 바꾸어주는 코드를 작성해주면 됩니다.
Written on October 26, 2018