Avatar ·

كيفية تهيئة مولد الأرقام العشوائية بشكل صحيح في Go؟

مرحبًا! أنا مبتدئ في Go وأحاول فهم توليد الأرقام العشوائية. قرأت أن هناك حزمة `math/rand` في Go، لكني أواجه مشكلة: في كل مرة أشغل البرنامج أحصل على نفس تسلسل الأرقام. إليك الكود الخاص بي: ```go package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 5; i++ { fmt.Println(rand.Intn(100)) } } ``` في كل تشغيل، يكون الإخراج دائمًا نفسه: `81, 87, 47, 59, 81`. كنت أتوقع أن تتغير الأرقام. سمعت أنه يجب "تهيئة" (seed) المولد بطريقة ما، لكني لا أفهم كيف أفعل ذلك بشكل صحيح. عندما أحاول استخدام `rand.Seed(time.Now().UnixNano())`، أحصل على تحذير من linter بأن Seed قد أصبح مهملاً في Go 1.20. كيف يمكن تهيئة المولد بشكل صحيح في الإصدارات الحديثة من Go؟ هل هناك فرق بين `math/rand` و `crypto/rand`؟ أي نهج يُعتبر صحيحًا للمهام العادية (غير التشفيرية)؟ سأكون ممتنًا لشرح مفصل مع أمثلة.