2013-02-19 17 views
7

तो मैं एक ऐसी स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो यादृच्छिक रूप से 4 के विभिन्न चरों में 4 के मूल्य को विभाजित करेगी। मैं इसे ठीक से करने का एक अच्छा तरीका नहीं सोच सकता। मैंने यादृच्छिक संख्याओं के बारे में सोचा ताकि वे 0.33 (4 में से 1/12) के करीब हों, लेकिन इससे अक्सर पिछले कुछ संख्याओं को वंचित किया जा सकता है। किसी ने इस तरह से कुछ भी करने की कोशिश की है या इस बारे में कोई शानदार विचार है कि इसे यथासंभव यादृच्छिक और समान रूप से असमान कैसे बनाया जाए?यादृच्छिक असमान भागों में एक संख्या को विभाजित करना

उत्तर

17

अपने पसंदीदा यादृच्छिक संख्या जनरेटर से 12 यादृच्छिक संख्याएं उत्पन्न करें, उन्हें r1..r12 पर कॉल करें।

उन्हें सभी जोड़ें, sum पर कॉल करें।

4 का आपका पहला यादृच्छिक अंश (r1/sum)*4 है। बाकी स्पष्ट होना चाहिए।

+0

वह शानदार था! आपका बहुत बहुत धन्यवाद! – Tom

+0

ध्यान दें कि यह समाधान उन संख्याओं के सेट उत्पन्न नहीं करता है जो समान रूप से तार्किक तरीके से वितरित किए जाते हैं, लेकिन यह वह समाधान है जो ज्यादातर लोग चुनते हैं क्योंकि वे समझ में नहीं आते हैं कि यह वास्तव में कुछ समान बनाने में विफल क्यों होता है। –

+0

@woodchips: यह आलोचना (हालांकि यह सही है) के लिए कुछ महत्वपूर्णता प्रदान करने में मददगार होगा, और एक उत्तर प्रदान करने के लिए और भी मददगार होगा जो समान रूप से वितरित विभाजन उत्पन्न करता है।मैंने उत्तरार्द्ध करने की कोशिश की है, हालांकि मुझे यकीन नहीं है कि यह भी सही है। – rici

8

किसी भी यादृच्छिक संख्या को 1 से अधिक और आवश्यक राशि के पुनर्विक्रय के बाद उत्पन्न करें।

उदाहरण:

  • आवश्यक राशि: 4
  • रैंडम नंबर: 1 2 3 4 5 6 7 8 9 10 11 12
  • योग = 78
  • पुनः पैमाना संख्या:

1 (1 * 4)/78

से बचाया गया

2 पर पुनः पैमाना (2 * 4)/78

...

से 12 (12 * 4)/78

2

निम्नलिखित कलन विधि पुनः पैमाना, समान रूप से वितरित विभाजन प्रदान करता है यह सोचते हैं कि यह संभव है एक निरंतर रेंज पर समान रूप से वितरित यादृच्छिक संख्या उत्पन्न करने के लिए (या, कम से कम, पर्याप्त रूप से कई संभावित मूल्यों के साथ एक अलग सीमा पर जो डुप्लिकेशंस की बाधा नगण्य हैं)।

k मूल्यों में t के विभाजन का उत्पादन करने के लिए:

  • रेंज [0, t] में उत्पन्न k-1 समान रूप से वितरित मूल्यों।

  • उन्हें क्रमबद्ध करें, और शुरुआत में 0 और t अंत में जोड़ें।

  • विभाजन के रूप में आसन्न मतभेदों का उपयोग करें।

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