Senior
uniqRandn fonksiyonunu uygulamanız gerekiyor, bu fonksiyon n uzunluğunda, benzersiz ve rastgele sayılardan oluşan bir dilim döndürür. func main() { fmt.Println(uniqRandn(10)) } func uniqRandn(n int) []int { //... }
sobes.tech yapay zeka
AI'dan gelen yanıt
n adet benzersiz rastgele sayı listesi oluşturmak için aşağıdaki yaklaşımı kullanabilirsiniz:
- 0'dan m-1'e kadar sayıları içeren bir liste oluşturun, burada m >= n (örneğin, m = 2*n veya daha fazla, böylece yeterli benzersiz sayı olur).
- Listeyi rastgele karıştırın (shuffle).
- İlk n öğeyi alın.
Go dilinde örnek uygulama:
package main
import (
"fmt"
"math/rand"
"time"
)
func uniqRandn(n int) []int {
m := n * 2 // daha büyük bir aralık gerekiyorsa artırılabilir
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))
}
Başka bir sayı aralığı gerekiyorsa, başlangıç listesinin oluşturulmasını ayarlayabilirsiniz. Bu yöntem, tekrar olmadan benzersizlik ve rastgelelik sağlar.