المسارات
/
Go
Go
/
المنهج
/
العشوائية
ال

العشوائية في Go

تمرينان

نبذة عن العشوائية

توفر الحزمة math/rand دعمًا لتوليد أعداد شبه عشوائية.

إليك كيفية توليد عدد صحيح عشوائي بين 0 و99:

import "math/rand"

n := rand.Intn(100) // n is a random int, 0 <= n < 100

الدالة rand.Float64 تُرجع عددًا عشريًا عشوائيًا بين 0.0 و1.0:

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

يوجد أيضًا دعم لخلط شريحة (أو هياكل بيانات أخرى):

x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
	x[i], x[j] = x[j], x[i]
})

البذور

متتاليات الأعداد التي تولّدها الحزمة math/rand ليست عشوائية حقًا. عند إعطاء قيمة "بذرة" محددة، تكون النتائج حتمية تمامًا.

في Go 1.20+ تُختار البذرة تلقائيًا وبشكل عشوائي، لذا سترى متتاليات مختلفة من الأعداد العشوائية في كل مرة تشغّل فيها برنامجك.

في الإصدارات السابقة من Go، كانت البذرة 1 افتراضيًا. لذا، للحصول على متتاليات مختلفة في عمليات تشغيل متعددة للبرنامج، كان عليك تعيين بذرة مولّد الأعداد العشوائية يدويًا، على سبيل المثال بالوقت الحالي، قبل الحصول على أي أعداد عشوائية.

rand.Seed(time.Now().UnixNano())
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم العشوائية

التدريب مقفل

افتح تمرينين إضافيين لممارسة العشوائية