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 একটি নতুন শিশুদের গেম নিয়ে কাজ করছেন, যেখানে থাকবে প্রাণী আর জাদুদণ্ড। এখন সময় এসেছে পাশা রোল করা, র্যান্ডম জাদুদণ্ডের এনার্জি তৈরি করা আর একটি স্লাইস শাফল করার ফাংশন কোড করার।
একটি RollADie ফাংশন ইমপ্লিমেন্ট করুন।
এটি হবে প্রচলিত বিশতলীয় পাশা, যার সংখ্যাগুলো ১ থেকে ২০।
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
একটি GenerateWandEnergy ফাংশন ইমপ্লিমেন্ট করুন।
জাদুদণ্ডের এনার্জি হবে একটি র্যান্ডম ফ্লোটিং পয়েন্ট সংখ্যা, যা 0.0-এর সমান বা তার চেয়ে বড় এবং 12.0-এর চেয়ে ছোট।
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
গেমটিতে আটটি ভিন্ন প্রাণী আছে:
এমন একটি ShuffleAnimals ফাংশন লিখুন, যা র্যান্ডম ক্রমে আটটি প্রাণীসহ একটি স্লাইস রিটার্ন করে।
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।