গণিতের র্যান্ডম নম্বর জেনারেটর দ্বিপদী সম্ভাবনা থেকে বিচ্যুত হয়?


9

সুতরাং, আসুন আমরা 10 বার একটি মুদ্রা ফ্লিপ করে বলি এবং 1টিকে "ইভেন্ট" বলি। আপনি যদি এই "ইভেন্টগুলি" এর ১,০০,০০০ রান করেন তবে ০.৪ থেকে ০..6 এর মধ্যে যে সমস্ত ইভেন্ট রয়েছে তার অনুপাত কত? দ্বিপদী সম্ভাব্যতা এটি প্রায় 0.65 হিসাবে প্রস্তাব করবে, তবে আমার গাণিতিক কোডটি আমাকে 0.24 সম্পর্কে বলছে

এখানে আমার বাক্য গঠন:

In[2]:= X:= RandomInteger[];
In[3]:= experiment[n_]:= Apply[Plus, Table[X, {n}]]/n;
In[4]:= trialheadcount[n_]:= .4 < Apply[Plus, Table[X, {n}]]/n < .6
In[5]:= sample=Table[trialheadcount[10], {1000000}]
In[6]:= Count[sample2,True];
Out[6]:= 245682

দুর্ঘটনা কোথায়?



1
@ জারোমিআংলিম এক্ষেত্রে আমার সন্দেহ হয় সমস্যাটি সম্ভবত কোডিংয়ের পরিবর্তে যুক্তি নিয়েই রয়েছে।
গ্লেন_বি -রিনস্টেট মনিকা

@ গ্লেেন_বি আমার মূল ধারণাটি হ'ল ইন্টারনেটে কোথাও একটি ভাল উত্তর রয়েছে যা আপনি সরবরাহ করেছেন বলে মনে হয়। :-)
জেরোমি অ্যাংলিম 2'15

উত্তর:


19

দুর্ঘটনার চেয়ে কম কঠোর ব্যবহার করা।

দশ টাসস সহ, 0.4 থেকে 0.6 এর মধ্যে কঠোরভাবে অনুপাতের ফলাফল পাওয়ার একমাত্র উপায় হ'ল যদি আপনি ঠিক 5 টি মাথা পান। এতে প্রায় 0.246 এর সম্ভাবনা রয়েছে ( ) চয়ন করুন, যা আপনার সিমুলেশনগুলি (সঠিকভাবে) ) দিতে।(105)(12)100.246

আপনি যদি আপনার সীমাতে 0.4 এবং 0.6 অন্তর্ভুক্ত করেন (তবে 4 টি, 5 বা 6 টি 10 ​​টাসসে 6) আপনার ফলাফলটি প্রায় 0.656 এর সম্ভাবনা রয়েছে, যতটা আপনি প্রত্যাশা করেছিলেন।

আপনার প্রথম চিন্তাটি এলোমেলো নম্বর জেনারেটর নিয়ে সমস্যা হওয়া উচিত নয়। ম্যাথামেটিকার মতো ভারী ব্যবহৃত প্যাকেজে এই ধরণের সমস্যাটি খুব আগে থেকেই স্পষ্ট হয়ে উঠত।


হাস্যকরভাবে, @ টিমএমসিএকনাইট আমাদের জন্য দ্বিপদী সম্ভাবনা দেখিয়েছেন।
সাইমন কুয়াং

8

আপনার লেখা কোড সম্পর্কে কিছু মন্তব্য:

  • আপনি সংজ্ঞায়িত করেছেন experiment[n_]তবে কখনও এটি ব্যবহার করেননি, পরিবর্তে এর সংজ্ঞাটি পুনরাবৃত্তি করছেন trialheadcount[n_]
  • experiment[n_]অনেক বেশি দক্ষতার সাথে প্রোগ্রাম করা যেতে পারে (বিল্ট-ইন কমান্ড ব্যবহার না করে BinomialDistribution) Total[RandomInteger[{0,1},n]/nএবং এটি Xঅপ্রয়োজনীয়ও করে তোলে।
  • experiment[n_]0.4 এবং 0.6 এর মধ্যে কঠোরভাবে মামলাগুলির সংখ্যা গণনা লেখার মাধ্যমে আরও দক্ষতার সাথে সম্পন্ন হয় Length[Select[Table[experiment[10],{10^6}], 0.4 < # < 0.6 &]]

তবে, প্রকৃত প্রশ্নের জন্যই, যেমন গ্লেন_বি উল্লেখ করেছেন, দ্বি-দ্বি বিতরণ পৃথক। 10 মুদ্রা tosses বাইরে দিয়ে মাথা পালিত, সম্ভাব্যতা যে প্রধানের নমুনা অনুপাত হয় কঠোরভাবে 0.4 এবং 0.6 মধ্যে আসলে শুধু ক্ষেত্রে দেখা যায় ; যেমন, অন্যদিকে, যদি আপনি নমুনা অনুপাত 0.4 এবং 0.6 এর মধ্যে অন্তর্ভুক্ত হওয়ার সম্ভাবনাটি গণনা করেন তবে সেটি হবে অতএব, আপনার ব্যবহারের জন্য কেবল আপনার কোডটি পরিবর্তন করতে হবেxp^=x/10x=5

Pr[X=5]=(105)(0.5)5(10.5)50.246094.
Pr[4X6]=x=46(10x)(0.5)x(10.5)10x=67210240.65625.
0.4 <= # <= 0.6পরিবর্তে. তবে অবশ্যই আমরা লিখতে পারতাম
Length[Select[RandomVariate[BinomialDistribution[10,1/2],{10^6}], 4 <= # <= 6 &]]

এই আদেশটি আপনার মূল কোডের চেয়ে প্রায় 9.6 গুণ বেশি দ্রুত faster আমি কল্পনা করেছিলাম যে ম্যাথামেটিকায় আমার চেয়ে আরও দক্ষ কেউ এটি আরও দ্রুত করতে পারে।


2
আপনি 10 এর অন্য একটি ফ্যাক্টর ব্যবহার করে আপনার কোডটি গতিময় করতে পারেন Total@Map[Counts@RandomVariate[BinomialDistribution[10, 1/2], 10^6], {4, 5, 6}]। আমার সন্দেহ Counts[], একটি অন্তর্নির্মিত ফাংশন, তুলনায় তুলনামূলকভাবে অনুকূলিত Select[], যা স্বেচ্ছাসেবীর পূর্বাভাসের সাথে কাজ করতে হবে।
ডেভিড জাং

1

গণিতের সম্ভাব্যতা পরীক্ষা-নিরীক্ষা করছেন

সম্ভাব্যতা এবং বিতরণগুলির সাথে কাজ করার জন্য গণিত একটি খুব আরামদায়ক কাঠামো সরবরাহ করে এবং - যথাযথ সীমাবদ্ধতার মূল ইস্যুটি সম্বোধন করা হয়েছে - আমি এই প্রশ্নটিকে এই পরিষ্কার করে এবং সম্ভবত একটি রেফারেন্স হিসাবে দরকারী হিসাবে ব্যবহার করতে চাই।

আসুন কেবল পরীক্ষাগুলি পুনরায়যোগ্য করে তুলুন এবং আমাদের স্বাদ অনুসারে কিছু প্লট বিকল্প সংজ্ঞায়িত করুন:

SeedRandom["Repeatable_151115"];
$PlotTheme = "Detailed";
SetOptions[Plot, Filling -> Axis];
SetOptions[DiscretePlot, ExtentSize -> Scaled[0.5], PlotMarkers -> "Point"];

প্যারামেট্রিক বিতরণের সাথে কাজ করা

আমরা এখন একটি ইভেন্টের জন্য অ্যাসিম্পোটোটিকাল বিতরণকে সংজ্ঞায়িত করতে পারি যা একটি (ন্যায্য) মুদ্রার থ্রোতে মাথার অনুপাত :πn

distProportionTenCoinThrows = With[
    {
        n = 10, (* number of coin throws *)
        p = 1/2 (* fair coin probability of head*)
    },
    (* derive the distribution for the proportion of heads *)
    TransformedDistribution[
        x/n,
        x \[Distributed] BinomialDistribution[ n, p ]
    ];

With[
    {
        pr = PlotRange -> {{0, 1}, {0, 0.25}}
    },
    theoreticalPlot = DiscretePlot[
        Evaluate @ PDF[ distProportionTenCoinThrows, p ],
        {p, 0, 1, 0.1},
        pr
    ];
    (* show plot with colored range *)
    Show @ {
        theoreticalPlot,
        DiscretePlot[
            Evaluate @ PDF[ distProportionTenCoinThrows, p ],
            {p, 0.4, 0.6, 0.1},
            pr,
            FillingStyle -> Red,
            PlotLegends -> None
        ]
    }
]

যা আমাদের অনুপাতের বিতরণ বিতরণের প্লট দেয়: TheoreticalDistributionPlot

আমরা ক্যালকুলেট সম্ভাব্যতা অবিলম্বে বন্টন ব্যবহার করতে পারেন এবং :Pr[0.4π0.6|πB(10,12)]Pr[0.4<π<0.6|πB(10,12)]

{
    Probability[ 0.4 <= p <= 0.6, p \[Distributed] distProportionTenCoinThrows ],
    Probability[ 0.4 < p < 0.6, p \[Distributed] distProportionTenCoinThrows ]
} // N

{0.65625, 0.246094}

মন্টি কার্লো এক্সপেরিমেন্টস করছেন

আমরা এটির বার বার নমুনা করতে একটি ইভেন্টের জন্য বিতরণটি ব্যবহার করতে পারি (মন্টি কার্লো)।

distProportionsOneMillionCoinThrows = With[
    {
        sampleSize = 1000000
    },
    EmpiricalDistribution[
        RandomVariate[
            distProportionTenCoinThrows,
            sampleSize
        ]
    ]
];

empiricalPlot = 
    DiscretePlot[
        Evaluate@PDF[ distProportionsOneMillionCoinThrows, p ],
        {p, 0, 1, 0.1}, 
        PlotRange -> {{0, 1}, {0, 0.25}} , 
        ExtentSize -> None, 
        PlotLegends -> None, 
        PlotStyle -> Red
    ]
]

EmpirialDistributionPlot

তাত্ত্বিক / অ্যাসিম্পোটোটিকাল বিতরণের সাথে এটির তুলনা করলে বোঝা যায় যে চিরকালের জন্য অনেকটা ফিট হয়:

Show @ {
   theoreticalPlot,
   empiricalPlot
}

ComparingDistributions


আপনি ব্যাপারে আরো পটভূমি তথ্য সমেত একটি অনুরূপ পোস্টে জানতে পারেন ম্যাথামেটিকাল উপর ম্যাথামেটিকাল দঃপূঃ
gwr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.