math/rand 패키지는 의사 난수를 생성하는 기능을 제공해요.
다음은 0과 99 사이의 임의의 정수를 생성하는 방법이에요:
n := rand.Intn(100) // n is a random int, 0 <= n < 100
rand.Float64 함수는 0.0과 1.0 사이의 임의의 실수를 반환해요:
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
슬라이스(또는 다른 데이터 구조)를 섞는 기능도 지원해요:
x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
x[i], x[j] = x[j], x[i]
})
math/rand 패키지가 생성하는 숫자열은 진정한 난수가 아니에요.
특정 "시드" 값을 주면 결과는 완전히 결정적이에요.
Go 1.20 이상에서는 시드가 자동으로 무작위로 선택되기 때문에, 프로그램을 실행할 때마다 다른 난수열을 보게 돼요.
그 이전 버전의 Go에서는 시드가 기본값으로 1이었어요.
따라서 프로그램을 여러 번 실행할 때마다 다른 숫자열을 얻으려면, 난수를 가져오기 전에 현재 시각 같은 값으로 난수 생성기의 시드를 직접 설정해야 했어요.
rand.Seed(time.Now().UnixNano())
엘레인은 동물과 마법 지팡이가 등장하는 새로운 어린이 게임을 만들고 있어요. 이제 주사위를 굴리고, 무작위로 마법 지팡이 에너지를 만들고, 슬라이스를 섞는 함수를 만들 차례예요.
RollADie 함수를 구현해요.
1부터 20까지의 숫자가 있는 전통적인 20면체 주사위예요.
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
GenerateWandEnergy 함수를 구현해요.
마법 지팡이 에너지는 0.0 이상 12.0 미만의 무작위 실수여야 해요.
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
게임에는 여덟 종류의 동물이 등장해요:
여덟 종류의 동물을 무작위 순서로 담은 슬라이스를 반환하는 ShuffleAnimals 함수를 작성해요.
Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.