Verwenden Sie Rand in Golang, um zufällige, sich nicht wiederholende Zahlen zu generieren

Freigeben: 2019-12-10 12:01:27
Original
5969 Leute haben es durchsucht

Verwenden Sie Rand in Golang, um zufällige, sich nicht wiederholende Zahlen zu generieren

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
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!