প্যাকেজ 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())