2012-04-26 13 views
6

से कम दिखाई देते हैं, मेरे पास एक मुश्किल सवाल है कि मैंने इसे समझने के बिना दो बार देखा है।यादृच्छिक कार्य: उच्च मान कम

कुछ बैकस्ट्रीरी: मैं एक टेक्स्टबेस आरपीजी-गेम बना रहा हूं जहां खिलाड़ी जानवरों/राक्षसों आदि के खिलाफ लड़ते हैं। यह किसी भी अन्य गेम की तरह काम करता है जहां आप हर दौर में एक-दूसरे पर कई हिट पॉइंट हिट करते हैं।

समस्या: मैं स्तर, कवच और इस तरह के हिट के अंतिम मूल्य उत्पन्न करने के लिए PHP में यादृच्छिक-फ़ंक्शन का उपयोग कर रहा हूं। लेकिन मुझे कम मूल्यों की तुलना में कम मूल्यों को प्रदर्शित करने के लिए उच्च मान (जैसे अधिकतम हिट) चाहिए।

Example graph

मैं इस PHP और रैंड-समारोह का उपयोग कर की तरह कुछ कैसे पुन: पेश कर सकते हैं:

यह एक उदाहरण-ग्राफ है? rand(1,100) टाइप करते समय प्रत्येक नंबर को चुनने का बराबर मौका होता है।

मेरा विचार यह है: 2 डिग्री (या वर्गबद्ध फ़ंक्शन) बनाएं और गणना करने के लिए यादृच्छिक संख्या (x) का उपयोग करें।

क्या यह काम मुझे चाहिए?

प्रश्न थोड़ा मुश्किल है, कृपया मुझे बताएं कि क्या आप अधिक जानकारी और विवरण चाहते हैं।

+1

देखें [एक यादृच्छिक संख्या जनरेटर पूर्वाग्रह कैसे करें] (http://stackoverflow.com/questions/1858364/how-to-bias-a-random-number- जनरेटर)। – deceze

+0

यदि आप चाहते हैं कि उच्च मान कम मानों की तुलना में कम दिखाई दें, तो ग्राफ को उलट दिया जाना चाहिए? मुझे लगता है कि एक्स अक्ष संख्या है, और वाई धुरी दिखाई देने का मौका है। – pomeh

उत्तर

1

कृपया इस सुंदर लेख को देखो: http://www.redblobgames.com/articles/probability/damage-rolls.html

रोलिंग पासा और परिणाम का प्रतिशत पर विचार इंटरैक्टिव चित्र हैं। यह आपके लिए बहुत उपयोगी होना चाहिए। रोलिंग यादृच्छिक संख्या के इस प्रकार के लिए

वेतन ध्यान:

roll1 = rollDice(2, 12); 
roll2 = rollDice(2, 12); 
damage = min(roll1, roll2); 

यह आपको देना चाहिए कि आप क्या करते हैं।

मान लीजिए कि आप तत्वों की एक सरणी मिल गया है (a,b,c,d) और आप बेतरतीब ढंग से उनमें से एक चुन करने के लिए नहीं होगा करते हैं:

0

ठीक है, यहाँ मेरा विचार है। यादृच्छिक तत्व सूचकांक प्राप्त करने के लिए rand(1,4) करना, इसका अर्थ यह होगा कि सभी तत्वों के पास दिखने का एक समान मौका है। (25%)

अब, मान लें कि हम यह सरणी लेते हैं: (a,b,c,d,d)

यहां हमारे पास अभी भी 4 तत्व हैं, लेकिन उनमें से प्रत्येक को समान रूप से उपस्थित होने की संभावना नहीं है।

  • एक, ख, ग: 20%
  • घ: 40%

या, के इस सरणी डालें:

(1,2,3,...,97,97,97,98,98,98,99,99,99,100,100,100,100)

सुझाव : इस तरह आप न केवल करेंगे यादृच्छिक संख्या पीढ़ी एल्गोरिदम पूर्वाग्रह, लेकिन आप वास्तव में प्रत्येक (या संख्याओं की एक श्रृंखला) के apparition की वांछित संभावना निर्धारित करेंगे।


तो, इस तरह मैं उस के बारे में जाना होगा है:

आप 1 से 100 तक नंबर चाहते हैं (अधिक संख्या अधिक बार दिखाई दे रहा साथ, 1000 को 1 से एक यादृच्छिक संख्या हो और साथ संबद्ध एक व्यापक रेंज। उदाहरण के लिए

rand = 800-1000 => rand/10 (80->100) 
rand = 600-800 => rand/9 (66->88) 
... 

या ऐसा ही कुछ। (आप किसी भी गणित आपरेशन आप कल्पना, सापेक्ष या जो कुछ भी इस्तेमाल कर सकते हैं ... और अपने एल्गोरिथ्म के साथ खेलते हैं)। मुझे आशा है कि आप मेरा विचार मिलता है।

0,123,

शुभकामनाएँ! :-)

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