मेरा सवाल यह है कि यह 100 बार के बजाय यादृच्छिक मात्रा में बार-बार क्यों दोहरा रहा है? print (len(result)) को केवल यह जांचने के लिए जोड़ा गया था कि यह वास्तव में कितने पुनरावृत्तियों को पूरा करता है, और यह हमेशा 100 बार के बजाय एक यादृच्छिक संख्या होती है।

मैंने for i in range(100) का उपयोग करने का भी प्रयास किया लेकिन यह भी काम नहीं किया।

# Die simulation

import random
min = 1 
max = 6

counter_1 = 0
counter_2 = 0
counter_3 = 0
counter_4 = 0
counter_5 = 0
counter_6 = 0

i = 0
result = []

while i < 100:
    if random.randint(min,max) == 1:
        print ("The die landed on 1.")
        counter_1 +=1
        result.append(1)

    elif random.randint(min,max) == 2:
        print ("The die landed on 2.")
        counter_2 +=1
        result.append(2)

    elif random.randint(min,max) == 3:
        print ("The die landed on 3.")
        counter_3 +=1
        result.append(3)

    elif random.randint(min,max) == 4:
        print ("The die landed on 4.")
        counter_4 +=1
        result.append(4)

    elif random.randint(min,max) == 5:
        print ("The die landed on 5.")
        counter_5 +=1
        result.append(5)

    elif random.randint(min,max) == 6:
        print ("The die landed on 6.")
        counter_6 +=1
        result.append(6)


    i +=1

print (result)
print (len(result))
print ("In a total of", 100, "number of simulations, The die landed on 1", counter_1, "times, landed on 2", counter_2, "times, landed on 3", counter_3 ,"times, ", end = '')
print ("landed on 4" , counter_4, "times, landed on 5", counter_5, "times, landed on 6", counter_6, "times.")
0
SpliceFire 27 अक्टूबर 2018, 11:17

2 जवाब

सबसे बढ़िया उत्तर

समस्या यह है कि आप प्रत्येक if और elif चेक पर random.randint को कॉल कर रहे हैं - इस परिणाम के साथ कि यह संभव है कि कोई भी चेक पास न हो, जिसके परिणामस्वरूप आपके फ़ाइनल में 100 से कम नंबर हों सरणी। आपको इस फ़ंक्शन को प्रति पुनरावृत्ति केवल एक बार कॉल करना चाहिए, परिणाम को एक चर में संग्रहीत करना चाहिए, और उस पर जांच करनी चाहिए।

3
Robin Zigmond 27 अक्टूबर 2018, 08:24

ये सही है। random.randint को लूप में एक बार नीचे की तरह रखा जाना चाहिए:

import random
min = 1 
max = 6

counter_1 = 0
counter_2 = 0
counter_3 = 0
counter_4 = 0
counter_5 = 0
counter_6 = 0

i = 0
result = []

while i < 100:
    holder=random.randint(min,max)
    if holder == 1:
        print ("The die landed on 1.")
        counter_1 +=1
        result.append(1)

    elif holder== 2:
        print ("The die landed on 2.")
        counter_2 +=1
        result.append(2)

    elif holder == 3:
        print ("The die landed on 3.")
        counter_3 +=1
        result.append(3)

    elif holder == 4:
        print ("The die landed on 4.")
        counter_4 +=1
        result.append(4)

    elif holder == 5:
        print ("The die landed on 5.")
        counter_5 +=1
        result.append(5)

    elif holder == 6:
        print ("The die landed on 6.")
        counter_6 +=1
        result.append(6)


    i +=1

print (result)
print (len(result))
print ("In a total of", 100, "number of simulations, The die landed on 1", counter_1, "times, landed on 2", counter_2, "times, landed on 3", counter_3 ,"times, ", end = '')
print ("landed on 4" , counter_4, "times, landed on 5", counter_5, "times, landed on 6", counter_6, "times.")
1
Jim Todd 27 अक्टूबर 2018, 08:41