Senior
uniqRandn функциясын жүзеге асыру керек, ол ұзындығы n болатын бірегей, кездейсоқ сандар тізімін құрады. func main() { fmt.Println(uniqRandn(10)) } func uniqRandn(n int) []int { //... }
sobes.tech AI
AI-дан жауап
n сандық бірегей кездейсоқ сандардан тұратын слайс құру үшін келесі әдісті қолдануға болады:
- 0-ден m-1-ге дейінгі сандармен слайс құрыңыз, мұнда m >= n (мысалы, m = 2*n немесе одан көп, жеткілікті бірегей сандар болу үшін).
- Слайсты кездейсоқ түрде араластырыңыз (shuffle).
- Алғашқы n элементті алыңыз.
Go тілінде мысал жүзеге асыру:
package main
import (
"fmt"
"math/rand"
"time"
)
func uniqRandn(n int) []int {
m := n * 2 // қажет болса, диапазонды кеңейтуге болады
nums := make([]int, m)
for i := 0; i < m; i++ {
nums[i] = i
}
rand.Seed(time.Now().UnixNano())
rand.Shuffle(m, func(i, j int) {
nums[i], nums[j] = nums[j], nums[i]
})
return nums[:n]
}
func main() {
fmt.Println(uniqRandn(10))
}
Егер 0..m-1-ден басқа диапазон керек болса, бастапқы слайстың генерациясын түзетуге болады. Бұл әдіс қайталанусыз бірегейлік пен кездейсоқтықты қамтамасыз етеді.