উত্তর:
চেষ্টা করুন:
from random import randrange
print(randrange(10))
আরও তথ্য: http://docs.python.org/library/random.html#random.randrange
secrets
ভাল র্যান্ডম সংখ্যার জন্য মডিউল। তথ্যসূত্র: docs.python.org/3/library/random.html
import random
print(random.randint(0,9))
random.randint(a, b)
একটি এলোমেলো পূর্ণসংখ্যা N যেমন এমন একটি <= N <= খ।
দস্তাবেজ: https://docs.python.org/3.1/library/random.html#random.randint
randint(0,9)
কখনই 9 ফেরত আসবে না)। এটি অনলাইন ডকুমেন্টেশনে প্রতিফলিত হয় না, তবে এটি অন্তর্নির্মিত সহায়তায় রয়েছে।
এটা চেষ্টা কর:
from random import randrange, uniform
# randrange gives you an integral value
irand = randrange(0, 10)
# uniform gives you a floating-point value
frand = uniform(0, 10)
secrets
মডিউল পাইথন 3.6 মধ্যে নতুন। এটি random
ক্রিপ্টোগ্রাফি বা সুরক্ষা ব্যবহারের জন্য মডিউলটির চেয়ে ভাল ।
অন্তর্ভুক্ত ব্যাপ্তি 0-9 এ এলোমেলোভাবে একটি পূর্ণসংখ্যা মুদ্রণ করতে:
from secrets import randbelow
print(randbelow(10))
বিশদগুলির জন্য, পিইপি 506 দেখুন ।
অ্যারের আকার চয়ন করুন (এই উদাহরণে, আমি আকারটি 20 হতে বেছে নিয়েছি)। এবং তারপরে, নিম্নলিখিতটি ব্যবহার করুন:
import numpy as np
np.random.randint(10, size=(1, 20))
আপনি নিম্নলিখিত ফর্মটির একটি আউটপুট দেখতে আশা করতে পারেন ( প্রতিটি বার চালানোর সময় বিভিন্ন এলোমেলো পূর্ণসংখ্যা ফিরে আসবে; অতএব আপনি আউটপুট অ্যারেতে পূর্ণসংখ্যাগুলি নীচের বর্ণিত উদাহরণ থেকে পৃথক হতে পারবেন )।
array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
এর মাধ্যমে চেষ্টা করুন random.shuffle
>>> import random
>>> nums = range(10)
>>> random.shuffle(nums)
>>> nums
[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]
আমি নিম্নলিখিতগুলির মধ্যে একটি চেষ্টা করব:
import numpy as np
X1 = np.random.randint(low=0, high=10, size=(15,))
print (X1)
>>> array([3, 0, 9, 0, 5, 7, 6, 9, 6, 7, 9, 6, 6, 9, 8])
import numpy as np
X2 = np.random.uniform(low=0, high=10, size=(15,)).astype(int)
print (X2)
>>> array([8, 3, 6, 9, 1, 0, 3, 6, 3, 3, 1, 2, 4, 0, 4])
3.> random.randrange
from random import randrange
X3 = [randrange(10) for i in range(15)]
print (X3)
>>> [2, 1, 4, 1, 2, 8, 8, 6, 4, 1, 0, 5, 8, 3, 5]
4.> random.randint
from random import randint
X4 = [randint(0, 9) for i in range(0, 15)]
print (X4)
>>> [6, 2, 6, 9, 5, 3, 2, 3, 3, 4, 4, 7, 4, 9, 6]
দ্রুততা:
► np.random.randint হয় দ্রুততম , দ্বারা অনুসরণ np.random.uniform এবং random.randrange । random.randint হ'ল ধীরে ।
► উভয়ই এনপি.আরান্ডম.অরান্টিন্ট এবং এনপি.আরন্ডম.উনিফর্ম র্যান্ডম.আরেন্ডারেঞ্জ এবং র্যান্ডম.র্যান্ডিন্টের চেয়ে অনেক বেশি দ্রুত (~ 8 - 12 গুণ বেশি দ্রুত) ।
%timeit np.random.randint(low=0, high=10, size=(15,))
>> 1.64 µs ± 7.83 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit np.random.uniform(low=0, high=10, size=(15,)).astype(int)
>> 2.15 µs ± 38.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit [randrange(10) for i in range(15)]
>> 12.9 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit [randint(0, 9) for i in range(0, 15)]
>> 20 µs ± 386 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
মন্তব্য:
1.> np.random.randint অর্ধ-খোলা ব্যবধান [নিম্ন, উচ্চ) এর উপর এলোমেলো পূর্ণসংখ্যার উত্পন্ন করে।
2.> np.random.uniform অর্ধ-খোলা ব্যবধানে [নিম্ন, উচ্চ) একসাথে বিতরণ সংখ্যা উত্পন্ন করে।
3.> random.randrange (স্টপ) পরিসর থেকে একটি এলোমেলো সংখ্যা উত্পন্ন করে (শুরু করুন, থামুন, পদক্ষেপ)।
৪.> random.randint (a, b) একটি এলোমেলো পূর্ণসংখ্যা N এমনভাবে প্রদান করে যে একটি <= N <= b।
৫.> অ্যাস্টাইপ (ইনট) নমপি অ্যারেটি ইনটার ডেটা টাইপ করে।
>.> আমি আকার = (15,) বেছে নিয়েছি। এটি আপনাকে দৈর্ঘ্যের একটি অদ্ভুত অ্যারে = 15 দেবে।
অবিচ্ছিন্ন সংখ্যার ক্ষেত্রে randint
বা randrange
সম্ভবত সেরা পছন্দগুলির মধ্যে তবে আপনার যদি ক্রম (যেমন ক list
) এর বিভিন্ন স্বতন্ত্র মান থাকে তবে আপনি এটি ব্যবহার করতে পারেন choice
:
>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5
choice
অবিচ্ছিন্ন নমুনা থেকে একটি আইটেমের জন্যও কাজ করে:
>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7
আপনার যদি এটি "ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী" প্রয়োজন হয়, সেখানে secrets.choice
অজগর 3.6 এবং আরও নতুন রয়েছে:
>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
random.sample
। প্রতিস্থাপনের সাথে আপনি এর সাথে choice
একটি [choice(values) for _ in range(3)]
অনেক পোস্ট কিভাবে পেতে প্রকট যদিও এক র্যান্ডম পূর্ণসংখ্যা, মূল প্রশ্ন হল কিভাবে র্যান্ডম পূর্ণসংখ্যা জেনারেট করতে জিজ্ঞেস করল গুলি (বহুবচন):
পাইথনে আমি কীভাবে 0 থেকে 9 এর মধ্যে এলোমেলো পূর্ণসংখ্যা তৈরি করতে পারি (অন্তর্ভুক্ত)?
স্পষ্টতার জন্য, আমরা এখানে একাধিক এলোমেলো পূর্ণসংখ্যা প্রাপ্ত তা প্রদর্শন করি।
প্রদত্ত
>>> import random
lo = 0
hi = 10
size = 5
কোড
একাধিক, র্যান্ডম পূর্ণসংখ্যার
# A
>>> [lo + int(random.random() * (hi - lo)) for _ in range(size)]
[5, 6, 1, 3, 0]
# B
>>> [random.randint(lo, hi) for _ in range(size)]
[9, 7, 0, 7, 3]
# C
>>> [random.randrange(lo, hi) for _ in range(size)]
[8, 3, 6, 8, 7]
# D
>>> lst = list(range(lo, hi))
>>> random.shuffle(lst)
>>> [lst[i] for i in range(size)]
[6, 8, 2, 5, 1]
# E
>>> [random.choice(range(lo, hi)) for _ in range(size)]
[2, 1, 6, 9, 5]
র্যান্ডম পূর্ণসংখ্যার নমুনা
# F
>>> random.choices(range(lo, hi), k=size)
[3, 2, 0, 8, 2]
# G
>>> random.sample(range(lo, hi), k=size)
[4, 5, 1, 2, 3]
বিস্তারিত
কিছু পোস্ট দেখায় যে কীভাবে একাধিক এলোমেলো পূর্ণসংখ্যার উত্পন্ন করা যায়। 1 এখানে কিছু বিকল্প রয়েছে যা অন্তর্ভুক্ত প্রশ্নটিকে সম্বোধন করে:
random.random
পরিসরে একটি এলোমেলো ফ্লোট ফেরত দেয়[0.0, 1.0)
random.randint
একটি এলোমেলো পূর্ণসংখ্যা প্রদান N
করেa <= N <= b
random.randrange
ওরফে থেকেrandint(a, b+1)
random.shuffle
জায়গায় একটি ক্রম পরিবর্তনrandom.choice
খালি শৃঙ্খলা থেকে একটি এলোমেলো উপাদান দেয়random.choices
ফিরিয়ে দেয় k
(প্রতিস্থাপন সহ পাইথন ৩.6++)random.sample
ফেরৎ k
জনসংখ্যা থেকে (প্রতিস্থাপন ছাড়া) অনন্য পছন্দসই মান নির্বাচন করে: 2আরও দেখুন আর Hettinger এর আলাপ কদর্য এবং aliasing থেকে উদাহরণ ব্যবহার করে random
মডিউল।
এখানে স্ট্যান্ডার্ড লাইব্রেরি এবং নম্পি কিছু র্যান্ডম ফাংশনগুলির একটি তুলনা করা হয়েছে:
| | random | numpy.random |
|-|-----------------------|----------------------------------|
|A| random() | random() |
|B| randint(low, high) | randint(low, high) |
|C| randrange(low, high) | randint(low, high) |
|D| shuffle(seq) | shuffle(seq) |
|E| choice(seq) | choice(seq) |
|F| choices(seq, k) | choice(seq, size) |
|G| sample(seq, k) | choice(seq, size, replace=False) |
আপনি নিম্পিতে অনেকগুলি বিতরণের যে কোনওটিকে এলোমেলো পূর্ণসংখ্যার নমুনায় দ্রুত রূপান্তর করতে পারেন । 3
উদাহরণ
>>> np.random.normal(loc=5, scale=10, size=size).astype(int)
array([17, 10, 3, 1, 16])
>>> np.random.poisson(lam=1, size=size).astype(int)
array([1, 3, 0, 2, 0])
>>> np.random.lognormal(mean=0.0, sigma=1.0, size=size).astype(int)
array([1, 3, 1, 5, 1])
1 যথা @ জন লরেন্স অ্যাসপডেন, @ এসএম মোহাম্মদ, @ সিড দ্য কিড, @ ব্যবহারকারী ১৪৩72২, @ জাংউ, এট আল। 2 @ প্রশান্ত একটি সংখ্যার এই মডিউলটির উল্লেখ করেছেন। 3 সিদ্ধার্থ সাতপ্যাথি দ্বারা প্রদর্শিত হয়েছে
আপনি যদি নপি ব্যবহার করতে চান তবে নিম্নলিখিতগুলি ব্যবহার করুন:
import numpy as np
print(np.random.randint(0,10))
>>> import random
>>> random.randrange(10)
3
>>> random.randrange(10)
1
দশটি নমুনার তালিকা পেতে:
>>> [random.randrange(10) for x in range(10)]
[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]
0 থেকে 9 এর মধ্যে এলোমেলো পূর্ণসংখ্যা তৈরি করা হচ্ছে।
import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)
আউটপুট:
[4 8 0 4 9 6 9 9 0 7]
আমদানি র্যান্ডম ফাংশনটি ব্যবহার করা সবচেয়ে ভাল উপায়
import random
print(random.sample(range(10), 10))
বা কোনও লাইব্রেরি আমদানি ছাড়াই:
n={}
for i in range(10):
n[i]=i
for p in range(10):
print(n.popitem()[1])
এখানে পপাইটেমগুলি অভিধান থেকে একটি স্বেচ্ছাসেবী মান সরিয়ে দেয় এবং প্রদান করে n
।
এটি গাণিতিক পদ্ধতির আরও বেশি তবে এটি সময়ের 100% কাজ করে:
ধরা যাক আপনি এবং এর random.random()
মধ্যে একটি সংখ্যা তৈরি করতে ফাংশনটি ব্যবহার করতে চান । এটি অর্জনের জন্য, কেবল নিম্নলিখিতটি করুন:a
b
num = (b-a)*random.random() + a;
অবশ্যই, আপনি আরও সংখ্যা তৈরি করতে পারেন।
এলোমেলো মডিউলটির জন্য ডকুমেন্টেশন পৃষ্ঠা থেকে :
সতর্কতা: এই মডিউলটির সিউডো-এলোমেলো জেনারেটর সুরক্ষা উদ্দেশ্যে ব্যবহার করা উচিত নয়। আপনার যদি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত সিউডো-র্যান্ডম নম্বর জেনারেটরের প্রয়োজন হয় তবে os.urandom () বা SystemRandom ব্যবহার করুন।
এলোমেলো.সিস্টেমর্যান্ডম , যা পাইথন ২.৪ এ প্রবর্তিত হয়েছিল, এটি ক্রিপ্টোগ্রাফিকভাবে নিরাপদ বলে মনে করা হয় । এটি পাইথন 3...1.১ এ এখনও পাওয়া যায় যা লেখার সময় বর্তমান।
>>> import string
>>> string.digits
'0123456789'
>>> import random
>>> random.SystemRandom().choice(string.digits)
'8'
>>> random.SystemRandom().choice(string.digits)
'1'
>>> random.SystemRandom().choice(string.digits)
'8'
>>> random.SystemRandom().choice(string.digits)
'5'
পরিবর্তে string.digits
, range
সম্ভবত একটি বোধগম্যতা সহ অন্যান্য উত্তরগুলির কয়েকটি প্রতি ব্যবহার করা যেতে পারে। আপনার প্রয়োজন অনুসারে মিক্স এবং ম্যাচ করুন।
ওপেনয়েণ্টস কেবল এলোমেলো পূর্ণসংখ্যার সিমুলেট করতে দেয় না বরং UserDefined
সংজ্ঞায়িত শ্রেণীর সাথে সম্পর্কিত বিতরণকে সংজ্ঞায়িত করতে দেয় ।
নিম্নলিখিতটি বিতরণের 12 টি ফলাফল অনুকরণ করে।
import openturns as ot
points = [[i] for i in range(10)]
distribution = ot.UserDefined(points) # By default, with equal weights.
for i in range(12):
x = distribution.getRealization()
print(i,x)
এই মুদ্রণ:
0 [8]
1 [7]
2 [4]
3 [7]
4 [3]
5 [3]
6 [2]
7 [9]
8 [0]
9 [5]
10 [9]
11 [6]
বন্ধনী আছে কারণ x
একটি নয় Point
1-মাত্রা হবে। একক কলটিতে 12 টি ফলাফল উত্পন্ন করা সহজ হবে getSample
:
sample = distribution.getSample(12)
উত্পাদন করবে:
>>> print(sample)
[ v0 ]
0 : [ 3 ]
1 : [ 9 ]
2 : [ 6 ]
3 : [ 3 ]
4 : [ 2 ]
5 : [ 6 ]
6 : [ 9 ]
7 : [ 5 ]
8 : [ 9 ]
9 : [ 5 ]
10 : [ 3 ]
11 : [ 2 ]
এই বিষয় সম্পর্কে আরও বিশদ এখানে: http://openturns.github.io/openturns/master/user_manual/_generated/openturns.UserDefined.html
পাইথন ৩.6 এর জন্য আমার আরও ভাগ্য ভাল ছিল
str_Key = ""
str_RandomKey = ""
for int_I in range(128):
str_Key = random.choice('0123456789')
str_RandomKey = str_RandomKey + str_Key
চরিত্রের পুলটি থেকে টানতে পরিবর্তন করতে, তৈরি করা অক্ষরের সংখ্যা পরিবর্তনের জন্য পরিসর পরিবর্তন করতে 'ABCD' এবং 'abcd' বা '^! ~ = -> <' এর মতো অক্ষর যুক্ত করুন।