In Golang gibt es zwei Pakete, die Rand bereitstellen, nämlich „math/rand“ und „crypto/rand“, entsprechend zwei Anwendungsszenarien.
1. Das Paket „math/rand“ implementiert einen Pseudozufallszahlengenerator. Das heißt, es werden Ganzzahlen und Gleitkommatypen generiert.
2. Das Paket „crypto/rand“ implementiert einen sichereren Zufallszahlengenerator für die Ver- und Entschlüsselung.
Verwenden Sie Rand in Golang, um zufällige, sich nicht wiederholende Zahlen zu generieren:
package test import ( "fmt" "math/rand" "time" ) //生成若干个不重复的随机数 func RandomTestBase() { //测试5次 for i := 0; i < 5; i++ { nums := generateRandomNumber(10, 30, 10) fmt.Println(nums) } } //生成count个[start,end)结束的不重复的随机数 func generateRandomNumber(start int, end int, count int) []int { //范围检查 if end < start || (end-start) < count { return nil } //存放结果的slice nums := make([]int, 0) //随机数生成器,加入时间戳保证每次生成的随机数不一样 r := rand.New(rand.NewSource(time.Now().UnixNano())) for len(nums) < count { //生成随机数 num := r.Intn((end - start)) + start //查重 exist := false for _, v := range nums { if v == num { exist = true break } } if !exist { nums = append(nums, num) } } return nums }
Ausgabeergebnis:
[12 20 18 19 21 28 15 13 11 10]
[28 15 12 10 20 18 16 24 27 17]
[25 28 29 19 21 12 16 13 11 15]
[27 20 19 23 18 13 21 24 12 26]
[19 10 27 18 28 12 22 14 16 26]
Empfohlen: Golang-Tutorial
Das obige ist der detaillierte Inhalt vonVerwenden Sie Rand in Golang, um zufällige, sich nicht wiederholende Zahlen zu generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!