كيفية تهيئة مولد الأرقام العشوائية بشكل صحيح في 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`؟ أي نهج يُعتبر صحيحًا للمهام العادية (غير التشفيرية)؟
سأكون ممتنًا لشرح مفصل مع أمثلة.