নকআউট সম্ভাবনা


9

নকআউট একটি বাস্কেটবল খেলা যেখানে খেলোয়াড়রা পালা শ্যুটিং নেয়। এটি দুই খেলোয়াড়ের প্রতিযোগিতার ক্রম হিসাবে খেলেছে, যার প্রত্যেকটিতে এই খেলোয়াড়দের মধ্যে একটির "ছিটকে যাওয়ার" সম্ভাবনা রয়েছে।

মনে করুন খেলোয়াড়রা A B C Dএবং তাদের শুটিং এবং ঝুড়ি তৈরির সম্ভাবনা 0.1 0.2 0.3 0.4যথাক্রমে প্রতিযোগিতার অন্য খেলোয়াড়ের থেকে আলাদাভাবে রয়েছে। লাইনের সামনের দুই খেলোয়াড় Aএবং B, "লড়াই"। যেহেতু Aপ্রথম যায়, সে ডিফেন্ডার কাটানো হচ্ছে বিপদের মধ্যে, এবং Bহয় আক্রমণকারী , এবং অবিলম্বে বর্জন বিপদের মধ্যে নেই। Aপ্রথম অঙ্কুর। যদি Aএটি তৈরি করে, Aসফলভাবে রক্ষা করেছে, এবং লাইনের পিছনে যায়। লাইন পরিবর্তন হবে B C D A। যদি Aএটি না করে, তবে Bকান্ডস। যদি Bএটি তৈরি করে, তবে Aবাইরে আছে এবং Bলাইনের পিছনে যায়, তাই লাইনটি হয়ে যায় C D B। যদি না হয়Aকিংবা Bএটা, প্রক্রিয়া পুনরাবৃত্তি করে তোলে, সঙ্গে Aআবার শুটিং, হয় না হওয়া পর্যন্ত Aবা Bএকটি ঝুড়ি করে তোলে।

ধরুন লাইনটি পরিবর্তিত হয়েছে B C D A( Aসাফল্যের সাথে রক্ষিত হয়েছিল)। এখন, Bএবং C"লড়াই" Bরক্ষক এবং Cআক্রমণকারী হিসাবে with এই প্রক্রিয়াটির পুনরাবৃত্তি কেবল এক জনকে বাদ দেওয়া পর্যন্ত। সেই ব্যক্তিটি বিজয়ী।

আপনার কাজটি প্রতিটি ব্যক্তির ঝুড়ি তৈরির সুযোগ পেয়ে বিজয়ী হওয়ার সম্ভাবনাগুলি গণনা করা।

ইনপুট :

সংখ্যার একটি তালিকা, যেমন 0.1 0.2বা 0.5 0.5 0.5 0.5, যেখানে n তম সংখ্যাটি হ'ল এন থ্রি প্লেয়ার একটি ঝুড়ি তৈরি করবে। কোনও ফাংশনের পরামিতি সহ আপনি যে কোনও পছন্দ মতো এই ইনপুটটি নিতে পারেন।

আউটপুট :

সংখ্যার একটি তালিকা, যেখানে n তম সংখ্যাটি হ'ল এন থের প্লেয়ার গেমটি জিতবে chance আপনার সংখ্যাগুলি অবশ্যই কমপক্ষে 90% সময়ের জন্য কমপক্ষে দুটি দশমিক স্থানে সঠিক হতে হবে। এর অর্থ আপনি সিমুলেশন-ভিত্তিক পদ্ধতির ব্যবহার করতে পারেন। তবে, যদি আপনার কোডটি সিমুলেশন ভিত্তিক না হয় (এটি কমপক্ষে dec দশমিক স্থানে সঠিক উত্তর ফেরত দেওয়ার গ্যারান্টিযুক্ত ) তবে আপনার স্কোর থেকে 30% কেড়ে নেবেন।

এর মধ্যে উদাহরণ 0.5 0.5: খেলোয়াড়দের কল করুন Aএবং B। আসুন pজিতে আসার সম্ভাবনা। Aএকটি আছে 2/3সফলভাবে রক্ষার সুযোগ (যেহেতু সেখানে এর 1/2সুযোগ যে Aস্কোর, একটি 1/4সুযোগ যে Aশটটি এবং Bস্কোর, এবং একটি 1/4সুযোগ উভয় মিস এবং প্রক্রিয়া পুনরাবৃত্তি)। যদি Aডিফেন্ড করতে ব্যর্থ হয় তবে তিনি ছিটকে যান এবং Bজিতেন। যদি Aডিফেন্ড করে, তবে লাইনটি হয়ে যায় B A। যেহেতু পরিস্থিতিটি প্রতিসাম্যপূর্ণ, তাই Aজয়ের সম্ভাবনা (1 - p)। আমরা পেতে:

p = 2/3 * (1 - p) + 1/3 * 0। সমাধান হচ্ছে, আমরা পেয়েছি p = 2/5। আউটপুট হতে হবে 2/5 3/5বা 0.4 0.6

আরও জটিল উদাহরণ করার সম্ভাবনা নিয়ে আমি যথেষ্ট ভালো না।

আপনার যদি আরও পরীক্ষার মামলাগুলির প্রয়োজন হয় তবে এখানে কয়েকটি দেওয়া হল:

0.1 0.2 0.3 0.4 --> 0.01 0.12 0.25 0.62
0.99 0.99 --> 0.5 0.5 (it's not exact, but if you round to two decimal places, you get 0.5 and 0.5)

উত্তর:


4

সিজেএম ( ৮৪ টি চর * ০.7 = ৫))

{_,({_,,{_2$m<(;(+Q0\)\++m>\}%)_(+.{X2$-*_@+/}1\{1$*\1$-}%)1\-f/.f*:.+}{,da}?}:Q

অনলাইন ডেমো । এটি একটি পুনরাবৃত্ত ফাংশন যা ডাবলসের অ্যারে নেয় এবং ডাবলসের অ্যারে প্রদান করে। অনলাইন ডেমোটিতে ফাংশনটি সম্পাদন করতে এবং প্রদর্শনের জন্য আউটপুট ফর্ম্যাট করতে স্বল্প পরিমাণে স্ক্যাফোোল্ডিং অন্তর্ভুক্ত।

ব্যবচ্ছেদ

মূল নীতিটি হ'ল যদি n > 1খেলোয়াড় বাকি থাকে তবে তাদের মধ্যে একটির অবশ্যই পরবর্তী ছিটকে যেতে হবে। তদুপরি, এর পরে কিউয়ের ক্রম ঘটে কেবলমাত্র সারিটির প্রাথমিক ক্রম এবং কাকে ছিটকে যায় তার উপর নির্ভর করে। সুতরাং আমরা nপ্রতিটি ক্ষেত্রে প্রতিটি খেলোয়াড়ের জন্য পুনরাবৃত্ত কল করতে পারি , জয়ের সম্ভাবনাগুলি গণনা করতে পারি এবং তারপরে আমাদের কেবল যথাযথভাবে ওজন করতে হবে এবং যুক্ত করতে হবে।

আমি ইনপুট সম্ভাব্যতা হিসাবে লেবেল করব [p_0 p_1 ... p_{n-1}]f(a,b)এর সম্ভাব্যতা যা aপ্রতিরক্ষা করতে ব্যর্থ হয় তা বোঝাতে দিন b। কোনো রাউন্ড, সম্ভাব্যতা যে aসফলভাবে defends হয় p_a, সম্ভাব্যতা যে bদরজায় কড়া নাড়লেই aহয় আউট (1-p_a)*p_b, এবং সম্ভাব্যতা যে এটা যায় আরেকটি বৃত্তাকার হয় (1-p_a)*(1-p_b)। আমরা হয় জ্যামিতিক অগ্রগতির একটি সুস্পষ্ট যোগফল করতে পারি বা আমরা তর্ক করতে পারি যে দুটি জ্যামিতিক অগ্রগতি একে অপরের সাথে সমানুপাতিক কারণ হিসাবে যুক্তিযুক্ত f(a,b) = (1-p_a)*p_b / (p_a + (1-p_a)*p_b)

তারপরে আমরা লাইনের পুরো রাউন্ডে একটি স্তর বাড়িয়ে নিতে পারি। প্রথম প্লেয়ারটি ছিটকে যাওয়ার সম্ভাবনাটি হ'ল f(0,1); দ্বিতীয় প্লেয়ারকে ছিটকে যাওয়ার সম্ভাবনাটি হ'ল (1-f(0,1)) * f(1,2); তৃতীয় খেলোয়াড় হলেন (1-f(0,1)) * (1-f(1,2)) * f(2,3); শেষ পর্যন্ত সম্ভাব্যতার সাথে নক আউট না হওয়া পর্যন্ত \prod_i (1-f(i,i+1)) * f(n-1,0)। জ্যামিতিক অগ্রগতি সম্পর্কে একই যুক্তি আমাদের এই সম্ভাব্যতাগুলিকে ওজন হিসাবে ব্যবহার করার অনুমতি দেয়, এর একটি উপাদান দ্বারা সাধারণীকরণের সাথে 1 / \prod_i f(i, i+1 mod n)

{                   e# Define a recursive function Q
  _,({              e# If we have more than one person left in the line...
    _,,{            e#   Map each i from 0 to n-1...
      _2$m<         e#     Rotate a copy of the probabilities left i times to get [p_i p_{i+1} ... p_{n-1} p_0 ... p_{i-1}]
      (;(+          e#     i fails to defend, leaving the line as [p_{i+2} ... p_{n-1} p_0 ... p_{i-1} p_{i+1}]
      Q             e#     Recursive call
      0\)\++        e#     Insert 0 for the probability of i winning and fix up the order
      m>\           e#     Rotate right i times and push under the list of probabilities
    }%
    )               e#   Stack: [probs if 0 knocked out, probs if 1 knocked out, ...] [p_0 p_1 ...]
    _(+.{           e#   Duplicate probs, rotate 1, and pointwise map block which calculates f(a,b)
      X2$-*_@+/     e#     f(a,b) = (1-p_a)*p_b / (p_a + (1-p_a)*p_b)  TODO is the d necessary?
    }
    1\{1$*\1$-}%    e#   Lift over the list of f(a,b) a cumulative product to get the weights  TODO is the d necessary?
    )1\-f/          e#   Normalise the weights
    .f*             e#   Pointwise map a multiplication of the probabilities for each case with the corresponding weight
    :.+             e#   Add the weights across the cases
  }{,da}?           e# ...else only one left, so return [1.0]
}:Q
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.