समस्या का प्रयास: संभावना है कि दो पासा में से एक तीसरे मरने से अधिक मूल्यवान होगा।पायथन यादृच्छिक नहीं है
समस्या: किसी कारण के लिए, जब मैं अजगर से random
मॉड्यूल (विशेष रूप से नमूना विधि) का उपयोग, मैं जब जब मैं numpy का उपयोग से एक अलग (और गलत) परिणाम के साथ समाप्त। मैंने नीचे परिणामों को शामिल किया है। कोड के दोहराए गए निष्पादन के समान परिणाम उत्पन्न होते हैं। कोई विचार, random.sample
विधि और numpy.random.random_integers
के अलग-अलग परिणाम क्यों हैं, भले ही उनके पास एक ही कार्य हो?
import numpy as np
import random
random_list = []
numpy_list = []
n= 500
np_wins = 0
rand_wins = 0
for i in range(n):
rolls = random.sample(range(1,7), 3)
rand_wins += any(rolls[0] < roll for roll in rolls)
rolls = np.random.random_integers(1, 6, 3)
np_wins += any(rolls[0] < roll for roll in rolls)
print "numpy : {}".format(np_wins/(n * 1.0))
print "random : {}".format(rand_wins/(n * 1.0))
परिणाम:
Press ENTER or type command to continue
numpy : 0.586
random : 0.688
अपेक्षाकृत छोटे नमूना अनुभाग की पहचान के लिए समस्याओं का अच्छा स्पष्टीकरण, और +1। यह ध्यान देने योग्य है कि numpy.random.random_integers() सही परिणाम उत्पन्न करेगा, समस्या # 2 को संबोधित करेगा, जबकि नमूना बढ़ाना n = 100000 समस्या # 1 को कम करेगा। –