हफ्तों भर की उत्सुकता के बाद, आप और आपके दोस्त पहली बार Dungeons & Dragons (D&D) खेलने के लिए इकट्ठा हुए। चूँकि यह खेल का पहला ही दौर है, हर खिलाड़ी को अपने लिए एक पात्र बनाना होता है। पात्र की क्षमताएँ छह फलकों वाला पासा फेंककर तय की जाती हैं। लेकिन पासे कहाँ हैं?
आपको झटका तब लगता है जब पता चलता है कि आपके दोस्त पासे जुटाने के लिए आपका ही इंतज़ार कर रहे हैं। D&D खेलने का विचार तो आपका ही था!
घबराहट में आपको याद आता है कि आप पासे लाना भूल ही गए हैं। और पासे न हों, तो D&D का खेल नहीं हो पाएगा। चूँकि आपको कोडिंग की थोड़ी बुनियादी जानकारी है, आप तुरंत एक हल निकाल लेते हैं: आप एक प्रोग्राम लिखेंगे जो पासा फेंकने की नकल करेगा।
Dungeons & Dragons के खेल में हर खिलाड़ी सबसे पहले एक पात्र बनाता है और फिर उसी के साथ खेलता है। इस पात्र में और भी कई चीज़ें होती हैं, जिनमें छह क्षमताएँ भी हैं: strength, dexterity, constitution, intelligence, wisdom और charisma। इन छह क्षमताओं के स्कोर यादृच्छिक तरीके से तय होते हैं। इसके लिए आप छह फलकों वाले चार पासे फेंकते हैं और सबसे बड़े तीन पासों का जोड़ लिख लेते हैं। ऐसा आप छह बार करते हैं, हर क्षमता के लिए एक बार।
खेल की शुरुआत में आपके पात्र के hitpoints 10 में उसके constitution मॉडिफायर को जोड़कर निकलते हैं। अपने पात्र का constitution मॉडिफायर निकालने के लिए उसके constitution में से 10 घटाइए, फिर 2 से भाग दीजिए और नीचे की ओर पूर्णांकित कीजिए।
ऊपर बताए नियमों का पालन करने वाला एक यादृच्छिक पात्र जनरेटर लिखिए।
उदाहरण के लिए, चार पासों को छह बार फेंकने पर नतीजे कुछ ऐसे आ सकते हैं:
चूँकि constitution 3 है, इसलिए constitution मॉडिफायर -4 होता है और hitpoints 6 होते हैं।
अधिकांश प्रोग्रामिंग भाषाओं में (छद्म-)यादृच्छिक जनरेटर होते हैं, लेकिन कम ही प्रोग्रामिंग भाषाएँ पासा फेंकने के लिए बनाई गई हैं। ऐसी ही एक भाषा Troll है।
Exercism पर साइन अप कीजिए और Lisp Flavoured Erlang को 68 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम देखेंगे कि (दिखने में) बेतरतीब पासे कैसे रोल किए जाएँ। आप सीड, स्यूडो रैंडम संख्याओं और कुछ आम गलतियों के बारे में जानेंगे। अंत में, हम देखेंगे कि बेतरतीब वैल्यू लौटाने वाले फंक्शन की जाँच के लिए प्रॉपर्टी-आधारित टेस्टिंग बढ़िया है।