[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/randcrypto/rand 패키지를 활용하여 효율적이고 안전한 난수를 생성할 수 있습니다. 각각의 상황에 맞게 적절한 패키지를 선택하여 사용함으로써 안정적인 애플리케이션을 개발할 수 있습니다.

참고 문헌: