مسیرها
/
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 ۱.۲۰ به بعد، بذر به‌صورت خودکار و تصادفی انتخاب می‌شود. بنابراین هر بار که برنامه‌تان را اجرا کنید، دنباله‌ی متفاوتی از اعداد تصادفی خواهید دید.

در نسخه‌های قبلی Go، بذر به‌طور پیش‌فرض 1 بود. بنابراین برای به دست آوردن دنباله‌های متفاوت در اجراهای مختلف برنامه، باید پیش از گرفتن هر عدد تصادفی، بذر مولد اعداد تصادفی را به‌صورت دستی تعیین می‌کردید، مثلاً با زمان جاری.

rand.Seed(time.Now().UnixNano())

دستورالعمل‌ها

الین دارد روی یک بازی کودکانه‌ی جدید کار می‌کند که در آن حیوانات و عصاهای جادویی حضور دارند. وقت آن رسیده که توابعی برای انداختن تاس، تولید انرژی تصادفی عصا و به‌هم‌زدن یک برش بنویسیم.

1. انداختن تاس

یک تابع RollADie پیاده‌سازی کنید.

این همان تاس سنتی بیست‌وجهی با اعداد ۱ تا ۲۰ است.

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

2. تولید انرژی عصا

یک تابع GenerateWandEnergy پیاده‌سازی کنید. انرژی عصا باید یک عدد اعشاری تصادفی بزرگ‌تر یا مساوی ۰.۰ و کوچک‌تر از ۱۲.۰ باشد.

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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.