जब भी मैं RANDBETWEEN(Value1,Value2) का उपयोग करने का प्रयास करता हूं, तो यह लगभग समान रूप से संख्याओं को यादृच्छिक रूप से वितरित करता है।
असमान तरीके से यादृच्छिक संख्या कैसे उत्पन्न करें?
उदाहरण -

enter image description here

उपरोक्त और सूत्र के बीच में "हां" और "नहीं" दोनों को समान रूप से वितरित किया गया। और मुझे "नहीं" से ज्यादा "हां" चाहिए

0
noswear 11 सितंबर 2019, 14:46

5 जवाब

आप निम्न के साथ अपने पक्ष में मूल्यों के बीच अपने रैंडबीच को तिरछा कर सकते हैं: =IF(RANDBETWEEN(1,10)>2,"YES","NO") आप >2 बिट को 1 और 10 के बीच किसी भी संख्या में बदल सकते हैं यह निर्धारित करने के लिए कि आप दोनों तरफ कितना जाना चाहते हैं।

3
Plutian 11 सितंबर 2019, 15:21
धन्यवाद! समाधान चतुर है।
 – 
noswear
11 सितंबर 2019, 15:48

विभिन्न वितरण प्राप्त करने के लिए व्युत्क्रम कार्यों का उपयोग करें। नीचे दिए गए फ़ंक्शन से पता चलता है कि मैंने एक में कई उलटा कार्यों को कैसे कार्यान्वित किया

  • जिला = वितरण प्रकार
  • ए, बी, सी = वितरण के पैरामीटर जैसे न्यूनतम, मोड, अधिकतम
  • प्रोब = रैंड ()

यदि आप कई यादृच्छिक मान (0 और 1 के बीच) पास करते हैं, तो फ़ंक्शन का परिणाम आपके द्वारा चुने गए वितरण के आकार के साथ समाप्त हो जाएगा।

Function DistInv(Dist, a, b, c, Prob) As Single
    If Dist = "Single" Then
        ' this is a single value to be used
        DistInv = a

    ElseIf Dist = "Binomial" Then
        ' binomial is like a coin flip. Only has a value of 1 or 0. 'a' determines the cut off point
        If Abs(Prob) > a Then
            DistInv = 0
        Else
            DistInv = 1
        End If

    ElseIf Dist = "Random" Then
        ' uniform distribution between 0% and 100%
        DistInv = Prob

    ElseIf Dist = "Rand Between" Then
        ' uniform distribution between the given parameters
        DistInv = Prob * (b - a) + a

    ElseIf Dist = "Triangular" Then
        ' Triangular distribution with a = lowest value, b = most likely value and c = highest value

        a1 = 1 / ((b - a) * (c - a))
        b1 = -2 * a / ((b - a) * (c - a))
        C1 = a ^ 2 / ((b - a) * (c - a))

        a2 = -1 / ((c - b) * (c - a))
        b2 = 2 * c / ((c - b) * (c - a))
        C2 = ((c - b) * (c - a) - c ^ 2) / ((c - b) * (c - a))

        DistInv = ((-4 * a1 * C1 + 4 * a1 * Prob + b1 ^ 2) ^ (1 / 2) - b1) / (2 * a1)

        If DistInv > b Then
            DistInv = ((-4 * a2 * C2 + 4 * a2 * Prob + b2 ^ 2) ^ (1 / 2) - b2) / (2 * a2)
        End If

    ElseIf Dist = "Norm Between" Then
        ' normal distribution between the given parameters
        DistInv = WorksheetFunction.NormInv(Prob, (a + b) / 2, (b - a) / 3.29)

    ElseIf Dist = "Norm Mean Dev" Then
        ' Normal distribution with the average.norm and standard deviation
        DistInv = WorksheetFunction.NormInv(Prob, a, b)

    ElseIf Dist = "Weibull" Then
        ' Weibull distribution of probability
        '
        ' inverse of Cumulative Weibull Function
        ' for a cumulative Weibull distribution F = 1- exp(-((x-c)/b)^a)
        ' where a is the shape parameter
        '       b is the scale parameter and
        '       c is the offset
        '
        ' then solving for x
        '
        ' x = c + b * (-log(1-Prob))^a

        DistInv = c + b * (-Log(1 - Prob)) ^ (1 / a)

    End If

End Function
2
Carl Kirstein 11 सितंबर 2019, 15:18
खुशी, आशा है कि यह उपयोगी है
 – 
Carl Kirstein
11 सितंबर 2019, 16:13

दो बार प्राप्त करने के लिए जितने "हां" उतने "नहीं":

=CHOOSE(RANDBETWEEN(1,3),"Yes","Yes","No")
1
Gary's Student 11 सितंबर 2019, 15:30
धन्यवाद! एक बहुत अच्छा समाधान और संभावना बाकी काम करती है।
 – 
noswear
11 सितंबर 2019, 15:49

यदि आप नहीं से अधिक हां चाहते हैं, तो हां सेल में सूत्र बनाएं RANDBETWEEN(Value1,Value2)+RANDBETWEEN(Value3,Value4)

0
Barry 11 सितंबर 2019, 14:54

कोशिश करें ROUND(RANDBETWEEN(RAND(),2),0)... 1-2 अंतराल में 0-1 . से अधिक मान होंगे

0
David García Bodego 11 सितंबर 2019, 15:00