Windows Freecell गेम के कार्ड शफ़लिंग एल्गोरिदम
(solitairelaboratory.com)बहुत से लोगों ने Windows का Freecell खेला होगा, जिसमें कार्ड्स को रैंडम तरीके से सजाया जाता है और हर कार्ड व्यवस्था को एक नंबर दिया जाता है। वही नंबर चुनने पर कार्ड्स फिर से बिल्कुल उसी तरह सजते हैं.
Windows 2000 से पहले तक इसमें 1 से 32,000 तक के नंबर थे, लेकिन XP के बाद यह बढ़कर 1,000,000 तक हो गया.
नंबर दर्ज करने पर कार्ड व्यवस्था बनाने वाला एल्गोरिदम सार्वजनिक है, इसलिए दूसरे Freecell प्रोग्रामों में भी इसका उपयोग किया जाता है.
यह एल्गोरिदम छोटे C कोड में इम्प्लीमेंट किया गया था, और MS के कंपाइलर में इम्प्लीमेंट किए गए rand() फ़ंक्शन और srand() फ़ंक्शन पर निर्भर है.
8 टिप्पणियां
Tag भाईसाहब, आप तो बहुत अच्छा खेलते हैं
मूल random number generation algorithm ऊपर से random जैसा दिखता है, लेकिन वास्तव में pseudo-random numbers की sequence बनाने वाली एक recurrence relation का उपयोग करता है। हर
rand()function implementation का तरीका अलग हो सकता है, लेकिन अगर पहला seed एक जैसा हो तो उसके बाद आने वाली random number sequence भी एक जैसी रहती है—यह लगभग सभी algorithms की एक साझा विशेषता है। इसलिए अगर card shuffle algorithm deterministic है, तो हर card arrangement भी seed के अनुसार deterministic रूप से तय होगा।यह थोड़ा विषय से हटकर है, लेकिन pseudo-random numbers को कितना ज्यादा मनमाना दिखाया जा सकता है, यह भी लंबे समय से research का एक विषय रहा है। TAOCP Vol.2 में भी इस पर संक्षेप में चर्चा की गई है.
असल में कंप्यूटर में true random जैसी कोई अवधारणा नहीं होती।
इसलिए आमतौर पर इंसानों के व्यवहार को ms यूनिट में मापा जाता है और उसे random seed के रूप में इस्तेमाल किया जाता है।
मुझे लगा था कि random number current time timestamp का इस्तेमाल करता है, लेकिन मैं गलत था, हाहा। शेयर करने के लिए धन्यवाद।
इनिशियलाइज़ करते समय seed के लिए अक्सर time का इस्तेमाल किया जाता है। क्योंकि समय लगातार बदलता रहता है।
जानकारी के लिए, Windows Help में लिखा है, “यह साबित नहीं हुआ है, लेकिन यहाँ खेले जाने वाले सभी गेमों के समाधान मौजूद हैं,” हालांकि कई लोगों के प्रयासों के अनुसार, deal number 11982 अब तक न जीता जा सकने वाला माना जाता है.
32,000 के बाद भी 146692, 186216, 455889, 495505, 512118, 517776, 781948 जैसे कार्ड arrangement मौजूद हैं, जिन्हें न जीता जा सकने वाला माना जाता है.
नहीं, ये कैसे पता लगाया कि इसे ऐसे लिखकर भी हल नहीं किया जा सकता? बड़े ज़बरदस्त लोग हैं!
डरावने लोग...!