python - सूची से किसी आइटम को यादृच्छिक रूप से कैसे चुनें?
list random (8)
सूची से किसी आइटम को यादृच्छिक रूप से कैसे चुनें?
मान लें कि मेरे पास निम्न सूची है:
foo = ['a', 'b', 'c', 'd', 'e']
इस सूची से यादृच्छिक रूप से किसी आइटम को पुनर्प्राप्त करने का सबसे आसान तरीका क्या है?
यदि आप वास्तव में यादृच्छिक के करीब चाहते हैं, तो मैं random
मॉड्यूल से सिस्टम विधि random
ऑब्जेक्ट का उपयोग करने का सुझाव देता हूं:
>>> import random
>>> sr = random.SystemRandom()
>>> foo = list('abcde')
>>> foo
['a', 'b', 'c', 'd', 'e']
और अब:
>>> sr.choice(foo)
'd'
>>> sr.choice(foo)
'e'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'b'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'c'
>>> sr.choice(foo)
'c'
यदि आप एक निर्धारक छद्म यादृच्छिक चयन चाहते हैं, तो choice
फ़ंक्शन का उपयोग करें (जो वास्तव में एक Random
वस्तु पर एक बाध्य विधि है):
>>> random.choice
<bound method Random.choice of <random.Random object at 0x800c1034>>
यह यादृच्छिक प्रतीत होता है, लेकिन यह वास्तव में नहीं है, जिसे हम देख सकते हैं कि क्या हमने बार-बार शोध किया है:
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
मान लें कि मेरे पास निम्न सूची है:
foo = ['a', 'b', 'c', 'd', 'e']
इस सूची से यादृच्छिक रूप से किसी आइटम को पुनर्प्राप्त करने का सबसे आसान तरीका क्या है?
अगर आपको इंडेक्स की आवश्यकता है तो बस इसका इस्तेमाल करें:
import random
foo = ['a', 'b', 'c', 'd', 'e']
print int(random.random() * len(foo))
print foo[int(random.random() * len(foo))]
random.choice वही करता है :)
मैं एक सूची से बेतरतीब ढंग से उठाए गए आइटम को हटाने के लिए एक स्क्रिप्ट का प्रस्ताव देता हूं जब तक यह खाली न हो:
एक set
बनाए रखें और सूची खाली होने तक यादृच्छिक रूप से उठाए गए तत्व ( choice
साथ) को हटा दें।
s=set(range(1,6))
import random
while len(s)>0:
s.remove(random.choice(list(s)))
print(s)
तीन रन तीन अलग-अलग जवाब देते हैं:
>>>
set([1, 3, 4, 5])
set([3, 4, 5])
set([3, 4])
set([4])
set([])
>>>
set([1, 2, 3, 5])
set([2, 3, 5])
set([2, 3])
set([2])
set([])
>>>
set([1, 2, 3, 5])
set([1, 2, 3])
set([1, 2])
set([1])
set([])
मैंने इसे काम करने के लिए किया:
import random
pick = ['Random','Random1','Random2','Random3']
print (pick[int(random.random() * len(pick))])
यदि आपको इंडेक्स की भी आवश्यकता है:
foo = ['a', 'b', 'c', 'd', 'e']
from random import randrange
random_index = randrange(0,len(foo))
print foo[random_index]
यह एक वैरिएबल वाला कोड है जो यादृच्छिक अनुक्रमणिका को परिभाषित करता है:
import random
foo = ['a', 'b', 'c', 'd', 'e']
randomindex = random.randint(0,len(foo)-1)
print (foo[randomindex])
## print (randomindex)
यह चर के बिना कोड है:
import random
foo = ['a', 'b', 'c', 'd', 'e']
print (foo[random.randint(0,len(foo)-1)])
और यह कोड करने के सबसे छोटे और सबसे अच्छे तरीके में कोड है:
import random
foo = ['a', 'b', 'c', 'd', 'e']
print(random.choice(foo))
(पायथन 2.7)
random.choice
प्रयोग करें:
import random
foo = ['a', 'b', 'c', 'd', 'e']
print(random.choice(foo))
क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक विकल्पों के लिए (उदाहरण के लिए एक वर्डलिस्ट से पासफ्रेज उत्पन्न करने के लिए), random.SystemRandom
उपयोग करें। random.SystemRandom
क्लास:
import random
foo = ['battery', 'correct', 'horse', 'staple']
secure_random = random.SystemRandom()
print(secure_random.choice(foo))
foo = ['a', 'b', 'c', 'd', 'e']
number_of_samples = 1
पायथन 2 में:
random_items = random.sample(population=foo, k=number_of_samples)
पायथन 3 में:
random_items = random.choices(population=foo, k=number_of_samples)