আমি কীভাবে নাম্বারে পুনরাবৃত্তিযোগ্য এলোমেলো সংখ্যা তৈরি করতে পারি?
list = np.random.random_integers(20,size=(10))
আমি কীভাবে নাম্বারে পুনরাবৃত্তিযোগ্য এলোমেলো সংখ্যা তৈরি করতে পারি?
list = np.random.random_integers(20,size=(10))
উত্তর:
numpy.random.Generator.choicereplaceপ্রতিস্থাপন ছাড়াই নমুনায় একটি যুক্তি সরবরাহ করে:
from numpy.random import default_rng
rng = default_rng()
numbers = rng.choice(20, size=10, replace=False)
আপনি যদি Generatorএপিআই ছাড়াই প্রাক-1.17 NumPy এ থাকেন তবে আপনি random.sample()স্ট্যান্ডার্ড লাইব্রেরি থেকে ব্যবহার করতে পারেন :
print(random.sample(range(20), 10))
আপনি ব্যবহার numpy.random.shuffle()এবং টুকরো টুকরো করতে পারেন , তবে এটি কম দক্ষ হবে:
a = numpy.arange(20)
numpy.random.shuffle(a)
print a[:10]
replaceউত্তরাধিকার numpy.random.choiceকার্যে একটি যুক্তিও রয়েছে , তবে এ যুক্তিটি অকার্যকরভাবে কার্যকর করা হয়েছিল এবং তারপরে এলোমেলো সংখ্যার স্ট্রিমের স্থায়িত্ব গ্যারান্টিগুলির কারণে অযোগ্য হয়ে পড়েছে, সুতরাং এটির ব্যবহারের প্রস্তাব দেওয়া হয়নি। (এটি মূলত অভ্যন্তরীণভাবে এলোমেলো এবং স্লাইস জিনিস করে does
random.sample(range(n), 10))খুব বড় ক্ষেত্রেও কার্যকর হবে n, যেহেতু কোনও rangeঅবজেক্ট কেবল একটি ছোট মোড়কের স্টোরিং স্টপ, স্টপ এবং ধাপের মান, তবে পূর্ণসংখ্যার সম্পূর্ণ তালিকা তৈরি করে না। পাইথন 2 এ, আপনি অনুরূপ আচরণ পেতে এর rangeসাথে প্রতিস্থাপন করতে পারেন xrange।
আমি numpy.random.sampleএখন ঠিক কাজ করে না বলে মনে করি । এটা আমার পথ:
import numpy as np
np.random.choice(range(20), 10, replace=False)
range(n)(বা arange(n)) পরিবর্তে choiceএটি কেবল পাসের সমতুল্য n, যেমন choice(20, 10, replace=False)।
np.random.choice(a, size, replace=False)বড়দের জন্য খুব ধীর a- আমার মেশিনে, এক = 1 এম এর জন্য প্রায় 30 এমএস।
nব্যবহারের জন্য সময় এবং স্মৃতি সমস্যাগুলি এড়ানোর জন্য numpy.random.Generator.choice(নপি v1.17 দিয়ে শুরু)
বছরগুলি পরে, 10000 ^ 2 এর মধ্যে 40000 বেছে নেওয়ার জন্য কিছু সময়সীমা (নম্পি 1.8.1, ইম্যাক 2.7 গিগাহার্টজ):
import random
import numpy as np
n = 10000
k = 4
np.random.seed( 0 )
%timeit np.random.choice( n**2, k * n, replace=True ) # 536 µs ± 1.58 µs
%timeit np.random.choice( n**2, k * n, replace=False ) # 6.1 s ± 9.91 ms
# https://docs.scipy.org/doc/numpy/reference/random/index.html
randomstate = np.random.default_rng( 0 )
%timeit randomstate.choice( n**2, k * n, replace=False, shuffle=False ) # 766 µs ± 2.18 µs
%timeit randomstate.choice( n**2, k * n, replace=False, shuffle=True ) # 1.05 ms ± 1.41 µs
%timeit random.sample( range( n**2 ), k * n ) # 47.3 ms ± 134 µs
(10000 out 2 এর মধ্যে 40000 কেন বেছে নেবেন? বড় বড় স্কিপি.স্পার্স.অরেন্ডম
ম্যাট্রিক্স উত্পন্ন করতে
- স্কিপি 1.4.1 ব্যবহার করুন np.random.choice( replace=False ), স্লোওউও))
Numpy.random লোকদের টুপি টিপ।
পাইথন সেট তালিকার রূপান্তর ব্যবহার করা যেতে পারে। 0 থেকে 20 এর মধ্যে 10 টি অনন্য নম্বর হিসাবে প্রাপ্ত করা যেতে পারে:
import numpy as np
import random
unique_numbers=set()
while(len(unique_numbers)<10):
unique_numbers.add(np.random.randint(0,20))
unique_numbers=list(unique_numbers)
random.shuffle(unique_numbers)
print(unique_numbers)
কেবলমাত্র একটি অ্যারে তৈরি করুন যাতে প্রয়োজনীয় সংখ্যার ব্যাপ্তি থাকে, তবে অ্যারেতে 0 তম উপাদান সহ বারবার এলোমেলো করে এগুলি এলোমেলো করুন। এটি একটি এলোমেলো ক্রম উত্পাদন করে যা সদৃশ মান ধারণ করে না।