পাইথনে 0 থেকে 9 অবধি এলোমেলো অঙ্ক উত্পন্ন করার দুটি সুস্পষ্ট উপায় রয়েছে। একটি 0 এবং 1 এর মধ্যে একটি এলোমেলো ভাসমান পয়েন্ট সংখ্যা উত্পন্ন করতে পারে, 10 দ্বারা গুণিত এবং নীচে বৃত্তাকারে। বিকল্পভাবে, একটি random.randint
পদ্ধতি ব্যবহার করতে পারে ।
import random
def random_digit_1():
return int(10 * random.random())
def random_digit_2():
return random.randint(0, 9)
আমি কৌতূহল ছিলাম যে যদি কেউ 0 থেকে 1 এর মধ্যে একটি এলোমেলো সংখ্যা তৈরি করে এবং শেষ সংখ্যাটি রাখে তবে কি হবে । অগত্যা বিতরণটি অভিন্ন হওয়ার আশা করিনি, তবে ফলাফলটি বেশ অবাক করেছিলাম।
from random import random, seed
from collections import Counter
seed(0)
counts = Counter(int(str(random())[-1]) for _ in range(1_000_000))
print(counts)
আউটপুট:
Counter({1: 84206,
5: 130245,
3: 119433,
6: 129835,
8: 101488,
2: 100861,
9: 84796,
4: 129088,
7: 120048})
নীচে একটি হিস্টোগ্রাম দেখানো হয়েছে। নোট করুন যে 0 টি প্রদর্শিত হবে না, যেহেতু অনুসরণীয় শূন্যগুলি কেটে গেছে। তবে কেউ কি ব্যাখ্যা করতে পারেন যে 4, 5 এবং 6 সংখ্যাগুলি কেন বাকীগুলির চেয়ে বেশি সাধারণ? আমি পাইথন 3.6.10 ব্যবহার করেছি তবে ফলাফল পাইথন 3.8.0a4 তে একই ছিল in
str
এটিকে বেস -10 এ রূপান্তর করে যা সমস্যার কারণ হতে বাধ্য। উদাহরণস্বরূপ একটি 1-বিট ফ্লোট ম্যান্টিসা b0 -> 1.0
এবং b1 -> 1.5
। "শেষ সংখ্যা" সর্বদা 0
বা হবে 5
।
random.randrange(10)
আইএমএইচও, আরও সুস্পষ্ট। random.randint
(যা random.randrange
হুডের নীচে কল করে) হ'ল random
পাইথনের ব্যাপ্তিগুলি কীভাবে কাজ করে তা বোঝে না এমন লোকদের মডিউলের পরে সংযোজন । ;)
randrange
হওয়ার পরে তারা দ্বিতীয় স্থানে এসেছিল randint
।