2010-12-29 10 views
8

के साथ पायथन यादृच्छिक अनुक्रम हाय मैं इसे एक स्कूल प्रोजेक्ट के लिए कर रहा हूं (इसलिए मैं किसी भी उन्नत सुविधाओं का उपयोग नहीं कर सकता) और मैं पायथन 2.6.6 का उपयोग कर रहा हूं।बीज

मैं 1000 1 से नंबर की एक सूची है और मेरे बीज हो जाएगा, कहना की सुविधा देता है, 448

मैं कि बीज के साथ एक यादृच्छिक अनुक्रम कैसे उत्पन्न कर सकते हैं ताकि मेरी सूची में नंबर एक में हो जाएगा अलग इंडेक्स?

और क्या यह संभव है, बीज को जानना, मेरी सूची में तत्वों को प्रारंभिक स्थिति में वापस कर दें?

क्षमा करें अगर यह भ्रमित है लेकिन अंग्रेजी मेरी मूल भाषा नहीं है।

धन्यवाद,

Favolas

+1

http://docs.python.org/release/2.6.6/library/random.html आपको –

+0

@Rafe जानने के लिए आपको जो कुछ भी जानने की ज़रूरत है, उसे बताएगा लेकिन मुझे – Favolas

उत्तर

24
import random 
SEED = 448 

myList = [ 'list', 'elements', 'go', 'here' ] 
random.seed(SEED) 
random.shuffle(myList) 

print myList 

परिणाम

['here', 'go', 'list', 'elements'] 

आपकी सूची में अब pseudorandomized है।

'छद्म' महत्वपूर्ण है, क्योंकि सभी सूचियों में एक ही बीज और वस्तुओं की संख्या एक ही 'यादृच्छिक' क्रम में वापस आ जाएगी। हम आपकी सूची को अन-शफल करने के लिए इसका उपयोग कर सकते हैं; अगर यह वास्तव में यादृच्छिक थे, तो यह असंभव होगा।

Order = list(range(len(myList))) 
# Order is a list having the same number of items as myList, 
# where each position's value equals its index 

random.seed(SEED) 
random.shuffle(Order) 
# Order is now shuffled in the same order as myList; 
# so each position's value equals its original index 

originalList = [0]*len(myList) # empty list, but the right length 
for index,originalIndex in enumerate(Order): 
    originalList[originalIndex] = myList[index] 
    # copy each item back to its original index 

print originalList 

परिणाम

['list', 'elements', 'go', 'here'] 

टाडा में! मूल सूची अब मेरी सूची का मूल क्रम है।

+0

धन्यवाद ह्यूग। यह मेरा सवाल हल हो गया – Favolas

1

अजगर डॉक्स http://docs.python.org/library/random.html पर एक साधारण जांच आपको बताता है के बारे में

random.seed([x]) 

जो आप बीज प्रारंभ करने में उपयोग कर सकते हैं।

आइटम को अपने प्रारंभिक क्रम में प्राप्त करने के लिए, बीज को फिर से सेट करें और यादृच्छिक संख्या दोबारा प्राप्त करें। फिर आप सूची में सामग्री प्राप्त करने के लिए इस इंडेक्स का उपयोग कर सकते हैं या जो कुछ भी के लिए इंडेक्स का उपयोग कर सकते हैं।

आप बस सूची को सॉर्ट करेंगे और यह क्रमबद्ध क्रम में होगा।

+0

समझ में नहीं आया पहले पढ़ा लेकिन समझ में नहीं आया। मैंने random.seed (448) किया है और यह मुझे कुछ भी नहीं देता है। मैं इस सूची का उपयोग अपनी श्वेत सूची का उपयोग कैसे कर सकता हूं? – Favolas

+0

आप बीज को उस बीज समारोह के साथ सेट करते हैं। फिर आप अपना अगला यादृच्छिक नंबर प्राप्त करने के लिए उस मॉड्यूल में एक और विधि कॉल करें। – Kissaki

संबंधित मुद्दे