How to generate N unique random numbers between min and max in Go

2 Answers

0 votes
package main

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

func generateUniqueRandomNumbers(N, min, max int) map[int]struct{} {
	uniqueNumbers := make(map[int]struct{})
	rand.Seed(time.Now().UnixNano())

	for len(uniqueNumbers) < N {
		num := rand.Intn(max - min + 1) + min
		uniqueNumbers[num] = struct{}{}
	}

	return uniqueNumbers
}

func main() {
	N := 8 // Number of unique random numbers

	randomNumbers := generateUniqueRandomNumbers(N, 1, 20)

	for num := range randomNumbers {
		fmt.Print(num, " ")
	}
}



/*
run:

4 10 5 16 1 9 8 3 

*/

 



answered Sep 25, 2024 by avibootz
0 votes
package main

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

func generateUniqueRandomNumbers(N, min, max int) []int {
	rand.Seed(time.Now().UnixNano()) // Seed the random number generator
	set := make(map[int]bool)        // Use a map to ensure uniqueness
	var uniqueNumbers []int

	for len(set) < N {
		num := rand.Intn(max-min+1) + min
		if !set[num] {
			set[num] = true
			uniqueNumbers = append(uniqueNumbers, num)
		}
	}

	return uniqueNumbers
}

func main() {
	N := 8

	uniqueNumbers := generateUniqueRandomNumbers(N, 1, 20)

	fmt.Println(uniqueNumbers)
}


/*
run:

[9 2 8 20 15 19 14 13]

*/

 



answered Sep 25, 2024 by avibootz

Related questions

2 answers 248 views
1 answer 127 views
1 answer 129 views
2 answers 132 views
...