[go] go 언어에서의 효율적인 난수 생성 방법
고 언어는 강력하고 효율적인 다양한 기능들을 제공하는 언어이지만, 난수 생성 역시 그 중 하나입니다. 이 글에서는 go 언어에서의 효율적이고 안전한 난수 생성 방법에 대해 알아보겠습니다.
1. math/rand 패키지 활용
go 언어에서 기본으로 제공되는 math/rand
패키지를 사용하여 간단하고 효율적인 난수를 생성할 수 있습니다. 다음은 이를 활용한 예제 코드입니다.
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(100))
}
위의 코드에서 rand.Seed(time.Now().UnixNano())
를 사용하여 시간에 따라 변하는 seed 값을 생성하고, rand.Intn(100)
을 통해 0부터 99까지의 난수를 생성합니다.
2. crypto/rand 패키지 활용
암호학적으로 안전한 난수를 생성해야 하는 경우, crypto/rand
패키지를 활용할 수 있습니다. 이 패키지는 보안에 민감한 데이터를 다룰 때 사용되며, 안전한 난수 생성을 보장합니다. 아래는 crypto/rand
를 활용한 예제 코드입니다.
package main
import (
"crypto/rand"
"encoding/binary"
"fmt"
)
func main() {
var num uint16
binary.Read(rand.Reader, binary.BigEndian, &num)
fmt.Println(num)
}
위의 코드에서 rand.Reader
를 사용하여 안전한 난수를 읽어오고, binary.Read
를 통해 이를 읽어와서 사용합니다.
결론
go 언어에서는 math/rand
와 crypto/rand
패키지를 활용하여 효율적이고 안전한 난수를 생성할 수 있습니다. 각각의 상황에 맞게 적절한 패키지를 선택하여 사용함으로써 안정적인 애플리케이션을 개발할 수 있습니다.
참고 문헌:
- https://golang.org/pkg/math/rand/
- https://golang.org/pkg/crypto/rand/