المسارات
/
Go
Go
/
التمارين
/
سحر الحيوانات
سحر الحيوانات

سحر الحيوانات

تمرين تعلّمي

مقدمة

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

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

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())

التعليمات

تعمل Elaine على لعبة جديدة للأطفال تضم حيوانات وعصيًا سحرية. حان الوقت لكتابة دوال ترمي حجر النرد، وتولّد طاقة عشوائية للعصا السحرية، وتخلط شريحة.

1. ارمِ حجر النرد

نفّذ دالة RollADie.

سيكون هذا حجر النرد التقليدي ذا العشرين وجهًا، بأرقام من 1 إلى 20.

d := RollADie() // d will be assigned a random int, 1 <= d <= 20

2. ولّد طاقة العصا السحرية

نفّذ دالة GenerateWandEnergy. ينبغي أن تكون طاقة العصا السحرية عددًا عشريًا عشوائيًا أكبر من أو يساوي 0.0 وأقل من 12.0.

f := GenerateWandEnergy()  // f will be assigned a random float64, 0.0 <= f < 12.0

3. اخلط شريحة

تتضمن اللعبة ثمانية حيوانات مختلفة:

  • ant
  • beaver
  • cat
  • dog
  • elephant
  • fox
  • giraffe
  • hedgehog

اكتب دالة ShuffleAnimals تُرجع شريحة تحتوي على الحيوانات الثمانية بترتيب عشوائي.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Go Exercism

مستعد لبدء سحر الحيوانات؟

سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.