[go] Go 언어로 랜덤 및 난수 생성하기

Go 언어는 랜덤 숫자와 난수를 생성하는 기능을 제공합니다. 이를 활용하여 다양한 애플리케이션에서 랜덤한 데이터를 생성할 수 있습니다. 이번 글에서는 Go 언어에서 랜덤 및 난수 생성하는 방법에 대해 알아보겠습니다.

랜덤 숫자 생성하기

Go 언어에서는 math/rand 패키지를 사용하여 랜덤한 숫자를 생성할 수 있습니다. 다음 예제는 1부터 10까지의 랜덤한 숫자를 생성하는 예제입니다.

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	rand.Seed(time.Now().UnixNano())

	randomNumber := rand.Intn(10) + 1

	fmt.Println("Random number:", randomNumber)
}

위 예제에서 math/rand 패키지와 time 패키지를 import합니다. rand.Intn(10) 함수는 0부터 9까지의 랜덤한 숫자를 반환하므로, 이에 1을 더하여 1부터 10까지의 숫자로 변환합니다. rand.Seed(time.Now().UnixNano())는 랜덤한 숫자를 생성하기 위해 seed 값을 설정하는 역할을 합니다.

난수 생성하기

Go 언어에서는 crypto/rand 패키지를 사용하여 난수를 생성할 수 있습니다. crypto/rand 패키지는 보안 고려를 위해 사용되며, 더 특정한 용도로 사용됩니다. 다음 예제는 16바이트 길이의 난수를 생성하는 예제입니다.

package main

import (
	"crypto/rand"
	"encoding/hex"
	"fmt"
)

func main() {
	randomBytes := make([]byte, 16)
	_, err := rand.Read(randomBytes)
	if err != nil {
		fmt.Println("Error generating random bytes:", err)
		return
	}

	randomHex := hex.EncodeToString(randomBytes)

	fmt.Println("Random hexadecimal:", randomHex)
}

위 예제에서는 crypto/rand 패키지를 import하고, rand.Read() 함수를 사용하여 16바이트 길이의 랜덤한 바이트 배열을 생성합니다. hex.EncodeToString() 함수를 사용하여 이를 16진수로 변환합니다.

마무리

Go 언어로 랜덤 숫자와 난수를 생성하는 방법을 알아보았습니다. math/rand 패키지를 사용하여 랜덤 숫자를 생성하고, crypto/rand 패키지를 사용하여 난수를 생성할 수 있습니다. 이를 활용하여 다양한 애플리케이션에서 랜덤한 데이터를 생성할 수 있습니다.

더 자세한 정보는 Go 공식 문서를 참조하세요.