Golang에서 중복 난수 생성을 방지하는 방법: 새로운 난수 생성기 rand.New(rand.Source)를 만듭니다. 엔트로피 소스로 rand.NewSource(time.Now().UnixNano())를 사용합니다. 임의의 정수를 생성하려면 rand.Intn(n)을 사용하십시오.
Golang에서 반복되는 난수 생성을 방지하는 방법은 무엇입니까?
Golang에서 난수를 생성하려면 math/rand
패키지를 사용해야 합니다. rand.Intn(n)
함수를 사용하여 [0, n-1] 범위에서 임의의 정수를 생성합니다. 여기서 n
은 양의 정수입니다. 그러나 rand.Intn(n)
은 동시 환경에서 반복되는 난수를 생성할 수 있습니다. math/rand
包。使用 rand.Intn(n)
函数可以生成一个在 [0, n-1] 范围内的随机整数,其中 n
是一个正整数。但是,rand.Intn(n)
在并发环境下可能会生成重复的随机数。
要解决这个问题,可以使用 rand.New(rand.Source)
函数创建一个新的随机数生成器,并使用 io.Reader
作为熵源。在大多数情况下,使用 rand.NewSource(time.Now().UnixNano())
作为熵源即可。
以下是一个示例代码,展示了如何使用 rand.NewSource
避免生成重复的随机数:
package main import ( "math/rand" "time" ) func main() { // 创建一个新的随机数生成器,并使用时间戳作为熵源 r := rand.New(rand.NewSource(time.Now().UnixNano())) // 生成 10 个随机整数 for i := 0; i < 10; i++ { result := r.Intn(100) println(result) } }
通过使用 rand.NewSource
和 time.Now().UnixNano()
rand.New(rand.Source)
함수를 사용하여 새로운 난수 생성기를 만들고 io.Reader
를 엔트로피 소스로 사용할 수 있습니다. . 대부분의 경우 rand.NewSource(time.Now().UnixNano())
를 엔트로피 소스로 사용하면 충분합니다. 🎜🎜다음은 중복 난수 생성을 방지하기 위해 rand.NewSource
를 사용하는 방법을 보여주는 샘플 코드입니다. 🎜rrreee🎜rand.NewSource
및 time을 사용합니다. Now().UnixNano()
는 고유하고 예측할 수 없는 난수를 생성하는 엔트로피 소스 역할을 합니다. 🎜위 내용은 Golang에서 중복 난수 생성을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!