অনেক কম্পিউটার অ্যাপ্লিকেশনে র্যান্ডম নম্বর জেনারেট করার প্রয়োজন পড়ে। তবে, কোনো একটি সত্যিকারের র্যান্ডম নম্বর জেনারেট করে না। পাইথন, যেকোনো অন্য প্রোগ্রামিং টেকনিকের মতো, একটি সুডো-র্যান্ডম জেনারেটর ব্যবহার করে। পাইথনের র্যান্ডম জেনারেশন Mersenne Twister অ্যালগরিদমের উপর ভিত্তি করে যা ৫৩-বিট প্রিসিশন ফ্লোট উৎপাদন করে। টেকনিকটি দ্রুত এবং থ্রেড-সেফ কিন্তু ক্রিপ্টোগ্রাফিক উদ্দেশ্যের জন্য উপযুক্ত নয়।
পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে random মডিউল রয়েছে যা র্যান্ডোমাইজেশন হ্যান্ডেল করার জন্য বিভিন্ন ফাংশন সংজ্ঞায়িত করে।
random.seed()
এই ফাংশন র্যান্ডম নম্বর জেনারেটর ইনিশিয়ালাইজ করে। যখন random মডিউল ইম্পোর্ট করা হয়, জেনারেটর সিস্টেম টাইমের সাহায্যে ইনিশিয়ালাইজ হয়। জেনারেটরকে পুনরায় সিড করতে যেকোনো int, str, byte বা bytearray অবজেক্ট ব্যবহার করুন।
random.getstate()
এই ফাংশন setstate() ফাংশনের সাথে মিলে একই র্যান্ডম ডেটা বারবার প্রजनন করতে সাহায্য করে। getstate() ফাংশন র্যান্ডম নম্বর জেনারেটর-এর ইন্টারনাল স্টেট রিটার্ন করে।
random.setstate()
এই ফাংশন জেনারেটর-এর ইন্টারনাল স্টেট পুনরায় স্থাপন করে।
র্যান্ডম ইন্টিজার নম্বর জেনারেশন
random.randrange() − এই ফাংশন দেওয়া রেঞ্জের মধ্যে একটি র্যান্ডম ইন্টিজার জেনারেট করে। এটি তিনটি প্যারামিটার নিতে পারে।
random.randrange(start, stop, step)
start এবং step প্যারামিটার অপশনাল। তাদের ডিফল্ট মান যথাক্রমে ০ এবং ১। Stepsequential সংখ্যাগুলোর ইন্টারভাল নির্ধারণ করে।
>>> random.randrange(10) 5 >>> random.randrange(10, 20) 17 >>> random.randrange(100, 200, 2) 188
(নোট: উপরের স্টেটমেন্টগুলোর আউটপুট, এবং এই আর্টিকেলের বাকি স্টেটমেন্টগুলো একই নাও হতে পারে কারণ সেগুলো র্যান্ডমলি জেনারেট করা হয়)
random.randint() − এই ফাংশন দুটি প্যারামিটারের মধ্যে একটি র্যান্ডম ইন্টিজার জেনারেট করে। এটি randrange() ফাংশনের মতো step প্যারামিটার ছাড়া। Start প্যারামিটার ম্যান্ডেটরি।
>>> random.randint(1, 10) 6 >>> random.randint(100, 200) 134
ফ্লোটিং পয়েন্ট র্যান্ডম নম্বর
random.random() − এই ফাংশন ০.০ এবং ১.০-এর মধ্যে একটি ফ্লোটিং পয়েন্ট নম্বর র্যান্ডমলি জেনারেট করে।
>>> random.random() 0.668544544081956
random.uniform() − এই ফাংশন দুটি প্যারামিটারের মধ্যে একটি ফ্লোটিং পয়েন্ট র্যান্ডম নম্বর রিটার্ন করে।
>>> random.uniform(0.5, 1.5) 1.2760281470664903 >>> random.uniform(1, 10) 7.336985794193224 >>> random.uniform(10, 5) 7.817794757786727
সিকোয়েন্স অবজেক্টের ওপর কাজ করা ফাংশন
random.choice() − এই ফাংশন সিকোয়েন্স থেকে একটি র্যান্ডম এলিমেন্ট বাছায়। যদি সিকোয়েন্স খালি হয়, IndexError থ্রো করা হয়।
>>> random.choice("Tutorialspoint")
'o'
>>> random.choice(range(10))
2
>>> random.choice([15, 31, 6, 29, 55, 5])
55
>>> random.choice((15, 31, 6, 29, 25, 55))
15
random.choices() − এই ফাংশন একটি লিস্ট থেকে একাধিক এলিমেন্ট র্যান্ডম образом বাছায়। এই ফাংশনের প্রথম প্যারামিটার হলো সিকোয়েন্স এবং দ্বিতীয় প্যারামিটার হলো বাছাই করার সংখ্যা।
>>> name = "TutorialsPoint" >>> random.choices(name, k=2) ['T', 'o']
random.shuffle() − এই ফাংশন একটি মিউটেবল সিকোয়েন্সের এলিমেন্টগুলো রি-অর্ডার করে এবং সেগুলো র্যান্ডমলি রাখে।
>>> num = [10, 20, 30, 40, 50] >>> random.shuffle(num) >>> num [50, 20, 40, 30, 10]
random.sample() − এই ফাংশন ইমিউটেবল সিকোয়েন্সের সাথে কাজ করে। এটি সিকোয়েন্স থেকে র্যান্ডমলি সিলেক্টেড আইটেমের একটি লিস্ট রিটার্ন করে সিকোয়েন্সকে অক্ষত রেখে।
>>> name = "TutorialsPoint"
>>> nm = random.sample(name, k=2)
>>> name, nm
('TutorialsPoint', ['i', 'a'])