random(), randrange(), এবং randint() সহ পাইথনে এলোমেলো দশমিক এবং পূর্ণসংখ্যা তৈরি করা

ব্যবসায়

পাইথন স্ট্যান্ডার্ড লাইব্রেরির র্যান্ডম মডিউলে র্যান্ডম(), ইউনিফর্ম(), র‌্যান্ডেঞ্জ(), এবং র‌্যান্ডিন্ট() ফাংশন ব্যবহার করে র‍্যান্ডম সংখ্যা তৈরি করা যেতে পারে।

র্যান্ডম মডিউলটি স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত করা হয়েছে, তাই অতিরিক্ত ইনস্টলেশনের প্রয়োজন নেই। অবশ্যই, আপনাকে এটি আমদানি করতে হবে।

নিম্নলিখিত তথ্য এখানে প্রদান করা হয়.

  • random.random()(0.0 এবং 1.0 এর মধ্যে ফ্লোটিং পয়েন্ট সংখ্যা)
  • random.uniform()(ফ্লোটিং পয়েন্ট সংখ্যার যেকোনো পরিসর)
  • এলোমেলো সংখ্যা তৈরি করুন যা একটি স্বাভাবিক বন্টন, গাউসিয়ান ডিস্ট্রিবিউশন ইত্যাদি অনুসরণ করে।
  • random.randrange()(নির্বিচারে পরিসীমা এবং ধাপের পূর্ণসংখ্যা)
  • random.randint()(যেকোনো পরিসরে একটি পূর্ণসংখ্যা)
  • উপাদান হিসাবে এলোমেলো সংখ্যা সহ একটি তালিকা তৈরি করা হচ্ছে
    • এলোমেলো ফ্লোটিং-পয়েন্ট সংখ্যার তালিকা
    • পূর্ণসংখ্যা র্যান্ডম সংখ্যার তালিকা
  • র্যান্ডম নম্বর জেনারেটর শুরু করুন (এলোমেলো নম্বর বীজ ঠিক করুন)

কীভাবে এলোমেলোভাবে একটি তালিকার উপাদানগুলি বের করা যায় বা সাজানো যায় সে সম্পর্কে নিম্নলিখিত নিবন্ধটি দেখুন।

random.random()(0.0 এবং 1.0 এর মধ্যে ফ্লোটিং পয়েন্ট সংখ্যা)

র্যান্ডম মডিউলের ফাংশন random() 0.0 এবং 1.0 এর মধ্যে ফ্লোটের একটি এলোমেলো ফ্লোটিং-পয়েন্ট সংখ্যা তৈরি করে।

import random

print(random.random())
# 0.4496839011176701

random.uniform()(ফ্লোটিং পয়েন্ট সংখ্যার যেকোনো পরিসর)

uniform(a, b)এই র‍্যান্ডম মডিউলের কাজগুলি নিম্নোক্ত রেঞ্জের যে কোন একটিতে ফ্লোটিং-পয়েন্ট নম্বর ফ্লোট টাইপের এলোমেলো সংখ্যা তৈরি করে

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

দুটি যুক্তি বড় বা ছোট হতে পারে; যদি তারা সমান হয়, তারা স্বাভাবিকভাবেই শুধুমাত্র সেই মানটি ফেরত দেবে। রিটার্ন মান সবসময় একটি ফ্লোট হয়.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

যুক্তি একটি float হিসাবে নির্দিষ্ট করা যেতে পারে.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

b-এর মান পরিসরে অন্তর্ভুক্ত কিনা তা নির্ভর করে নিম্নোক্ত রাউন্ডিংয়ের উপর, যেমন নথিভুক্ত।
a + (b-a) * random.random()

শেষবিন্দুর মান b পরিসরে আছে কি না তা নির্ভর করে নিম্নোক্ত সমীকরণে ভাসমান বিন্দুর রাউন্ডিংয়ের উপর
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

এলোমেলো সংখ্যা তৈরি করুন যা একটি স্বাভাবিক বন্টন, গাউসিয়ান ডিস্ট্রিবিউশন ইত্যাদি অনুসরণ করে।

উপরের র্যান্ডম() এবং ইউনিফর্ম() ফাংশনগুলি সমানভাবে বিতরণ করা এলোমেলো সংখ্যাগুলি তৈরি করে, তবে ফ্লোটিং পয়েন্ট নম্বরগুলি তৈরি করার জন্যও ফাংশন রয়েছে যা নিম্নলিখিত বন্টন অনুসরণ করে।

  • বিটা বিতরণ:random.betavariate()
  • সূচকীয় বিতরণ:random.expovariate()
  • গামা বিতরণ:random.gammavariate()
  • গাউসিয়ান বিতরণ:random.gauss()
  • স্বাভাবিক বিতরণ:random.lognormvariate()
  • স্বাভাবিক বন্টন:random.normalvariate()
  • ভন Mises বিতরণ:random.vonmisesvariate()
  • প্যারেটো বিতরণ:random.paretovariate()
  • Weibull বিতরণ:random.weibullvariate()

প্রতিটি বন্টনের পরামিতি আর্গুমেন্ট দ্বারা নির্দিষ্ট করা হয়। বিস্তারিত জানার জন্য অফিসিয়াল ডকুমেন্টেশন দেখুন।

random.randrange()(নির্বিচারে পরিসীমা এবং ধাপের পূর্ণসংখ্যা)

randrange(start, stop, step)
এই র্যান্ডম মডিউলের ফাংশন নিম্নলিখিত উপাদানগুলি থেকে এলোমেলোভাবে নির্বাচিত উপাদান প্রদান করে।
range(start, stop, step)

range() এর মত, আর্গুমেন্ট শুরু এবং ধাপ বাদ দেওয়া যেতে পারে। যদি সেগুলি বাদ দেওয়া হয়, শুরু=0 এবং ধাপ=1।

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

আর্গুমেন্ট ধাপটি একটি জোড় বা বিজোড় র্যান্ডম পূর্ণসংখ্যা, অথবা একটি র্যান্ডম পূর্ণসংখ্যা তৈরি করতে সেট করা যেতে পারে যা তিনটির একাধিক।

উদাহরণস্বরূপ, যদি শুরুটি জোড় এবং ধাপ=2 হয়, তবে পরিসরে শুধুমাত্র এমনকি পূর্ণসংখ্যাগুলি এলোমেলোভাবে পাওয়া যেতে পারে।

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(যেকোনো পরিসরে একটি পূর্ণসংখ্যা)

randint(a, b)
এই র্যান্ডম মডিউলের ফাংশন নিম্নলিখিত র্যান্ডম পূর্ণসংখ্যা int প্রদান করে।
a <= n <= b
randrange(a, b + 1)এর সমতুল্য; মনে রাখবেন যে b-এর মানও পরিসরে অন্তর্ভুক্ত করা হয়েছে।

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

উপাদান হিসাবে এলোমেলো সংখ্যা সহ একটি তালিকা তৈরি করা হচ্ছে

এই বিভাগে, আমরা ব্যাখ্যা করব কিভাবে স্ট্যান্ডার্ড লাইব্রেরির এলোমেলো মডিউল ব্যবহার করে উপাদান হিসেবে এলোমেলো সংখ্যা সহ একটি তালিকা তৈরি করতে হয়।

ফ্লোটিং-পয়েন্ট ফ্লোট সহ র্যান্ডম সংখ্যার তালিকা

একটি তালিকা তৈরি করতে যার উপাদানগুলি ফ্লোটিং-পয়েন্ট র্যান্ডম সংখ্যা, তালিকা বোঝার স্বরলিপির সাথে random() এবং uniform() ফাংশনগুলিকে একত্রিত করুন।

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

উপরের উদাহরণে, range() ব্যবহার করা হয়েছে, তবে তালিকা এবং টিপলগুলি পছন্দসই সংখ্যক উপাদানের জন্যও সম্ভব। তালিকা বোঝার বিষয়ে আরও বিশদ বিবরণের জন্য, অনুগ্রহ করে নিম্নলিখিত নিবন্ধটি পড়ুন।

পূর্ণসংখ্যা int র্যান্ডম সংখ্যার তালিকা

একটি তালিকা তৈরি করার সময় যার উপাদানগুলি পূর্ণসংখ্যা র্যান্ডম সংখ্যা, উপরের randange() এবং randint() কে তালিকা বোঝার স্বরলিপির সাথে একত্রিত করার ফলে ডুপ্লিকেট মান হতে পারে।

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

আপনি যদি ডুপ্লিকেশন ছাড়াই পূর্ণসংখ্যার একটি এলোমেলো ক্রম তৈরি করতে চান তবে random.sample() ব্যবহার করে একটি নির্বিচারে পরিসীমা সহ range() এর উপাদানগুলি বের করুন।

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

random.sample() সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে নিম্নলিখিত নিবন্ধটি পড়ুন।

র্যান্ডম নম্বর জেনারেটর শুরু করুন (এলোমেলো নম্বর বীজ ঠিক করুন)

র্যান্ডম মডিউলের ফাংশন seed() কে একটি নির্বিচারে পূর্ণসংখ্যা দেওয়ার মাধ্যমে, এলোমেলো সংখ্যার বীজ স্থির করা যেতে পারে এবং র্যান্ডম সংখ্যা জেনারেটর শুরু করা যেতে পারে।

একই বীজ দিয়ে সূচনা করার পরে, র্যান্ডম মান সবসময় একই ভাবে তৈরি হয়।

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025