মূলত, আপনি যা চাইছেন তা হ'ল "আধা-র্যান্ডম" ইভেন্ট জেনারেটর যা নিম্নলিখিত বৈশিষ্ট্যগুলি সহ ইভেন্টগুলি উত্পন্ন করে:
প্রতিটি ইভেন্ট যে গড় হারে ঘটে তা আগেই নির্দিষ্ট করে দেওয়া হয়।
একই ঘটনাটি এলোমেলোভাবে হওয়ার চেয়ে একটানা দু'বার ঘটার সম্ভাবনা কম।
ঘটনাগুলি সম্পূর্ণ অনুমানযোগ্য নয়।
এটি করার একটি উপায় হ'ল প্রথমে একটি নন-এলোমেলো ইভেন্ট জেনারেটর প্রয়োগ করা যা লক্ষ্য 1 এবং 2 টি পূরণ করে এবং তারপরে 3 লক্ষ্যটি পূরণ করার জন্য কিছু এলোমেলোতা যুক্ত করে।
নন-এলোমেলো ইভেন্ট জেনারেটরের জন্য, আমরা একটি সাধারণ দমিয়ে থাকা অ্যালগরিদম ব্যবহার করতে পারি । বিশেষত, পি 1 , পি 2 , ..., পি এন 1 থেকে n এর ইভেন্টগুলির আপেক্ষিক সম্ভাবনা হয়ে উঠুক এবং এস = পি 1 + পি 2 + ... + পি এনকে ওজনের যোগফল হিসাবে দেখা যাক। তারপরে আমরা নিম্নলিখিত অ্যালগরিদমটি ব্যবহার করে একটি অ-র্যান্ডম সর্বাধিক সংখ্যক সামঞ্জস্যপূর্ণ ক্রম উত্পন্ন করতে পারি:
প্রাথমিকভাবে, ই 1 = ই 2 = ... = ই এন = 0 দিন।
একটি ইভেন্ট উৎপন্ন করার জন্য প্রতিটি বাড়ায় ই আমি দ্বারা পি আমি , এবং আউটপুট ঘটনা ট যার জন্য ই ট বৃহত্তম (বন্ধন আপনি যেভাবে চান সেভাবে ভঙ্গ) হয়।
হ্রাস ই ট দ্বারা গুলি , এবং ধাপে 2 থেকে পুনরাবৃত্তি।
উদাহরণস্বরূপ, পি এ = 5, পি বি = 4 এবং পি সি = 1 সহ তিনটি ইভেন্ট এ, বি এবং সি দেওয়া , এই অ্যালগরিদম আউটপুটগুলির নিম্নলিখিত ক্রমের মতো কিছু উত্পন্ন করে:
A B A B C A B A B A A B A B C A B A B A A B A B C A B A B A
লক্ষ্য করুন যে কীভাবে 30 ইভেন্টের ক্রমটি ঠিক 15 হিসাবে, 12 বিএস এবং 3 সিএস রয়েছে contains এটি একেবারে অনুকূলভাবে বিতরণ করা হয় না - পরপর দুটি হিসাবে দু'জনের কয়েকটি ঘটনা রয়েছে যা এড়ানো যেত - তবে এটি কাছাকাছি আসে।
এখন, এই ক্রমটিতে এলোমেলোতা যুক্ত করার জন্য আপনার কাছে বেশ কয়েকটি (অগত্যা পারস্পরিক একচেটিয়া নয়) বিকল্প রয়েছে:
আপনি ফিলিপের পরামর্শ অনুসরণ করতে পারেন , এবং কিছু যথাযথ আকারের N এর জন্য N আসন্ন ইভেন্টগুলির একটি "ডেক" বজায় রাখতে পারেন । যতবারই আপনাকে কোনও ইভেন্ট উত্পন্ন করার দরকার হয়, আপনি ডেক থেকে একটি এলোমেলো ইভেন্ট চয়ন করেন এবং তারপরে উপরের দিকে অলগরিদম দ্বারা পরবর্তী ইভেন্ট আউটপুট দিয়ে প্রতিস্থাপন করেন।
এটি এন = 3 দিয়ে উপরের উদাহরণটিতে প্রয়োগ করে উদাহরণস্বরূপ:
A B A B C A B B A B A B C A A A A B B A B A C A B A B A B A
অন্যদিকে এন = 10 আরও এলোমেলো চেহারা দেয়:
A A B A C A A B B B A A A A A A C B A B A A B A C A C B B B
খেয়াল করুন যে কীভাবে সাধারণ ঘটনাগুলি এ এবং বি এলোমেলো হয়ে যাওয়ার কারণে আরও অনেক বেশি রান নিয়ে আসে, যখন বিরল সি ইভেন্টগুলি এখনও বেশ ভালভাবেই ফাঁক করে যায়।
আপনি কিছুটা এলোমেলোভাবে সরাসরি সংমিশ্রণ অ্যালগরিদমে ইনজেকশন করতে পারেন। উদাহরণ হিসেবে বলা যায়, এর পরিবর্তে বৃদ্ধিশীল এর ই আমি দ্বারা পি আমি ধাপ 2, আপনি এটি দ্বারা বাড়ায় পারে পি আমি × র্যান্ডম (0, 2), যেখানে র্যান্ডম ( একটি , খ ) একটি অবিশেষে মধ্যে র্যান্ডম সংখ্যা বিতরণ করা হয় একটি এবং খ ; এটি নিম্নলিখিতগুলির মতো আউটপুট দেয়:
A B B C A B A A B A A B A B A A B A A A B C A B A B A C A B
অথবা আপনি পারা বৃদ্ধি ই আমি দ্বারা পি আমি + + র্যান্ডম (- গ , গ ), যা (জন্য উত্পাদন করবে গ = 0.1 × গুলি ):
B A A B C A B A B A B A B A C A B A B A B A A B C A B A B A
বা, সি = 0.5 × এর জন্য :
B A B A B A C A B A B A A C B C A A B C B A B B A B A B C A
নোটের তুলনায় তুলনামূলকভাবে সাধারণ ইভেন্ট এ এবং বি এর চেয়ে বিরল ইভেন্ট সি এর জন্য অ্যাডিটিভ স্কিমটি কীভাবে আরও শক্তিশালী এলোমেলোভাবে প্রভাব ফেলবে তা দ্রষ্টব্য; এটি পছন্দসই বা নাও হতে পারে। অবশ্যই, আপনি এই স্কিম, অথবা বাড়তি অন্য কোন সমন্বয় কিছু সমন্বয়, যতদিন ব্যবহার করতে পারে যেমন সম্পত্তি অপরিবর্তিত যে গড় এর বৃদ্ধি ই আমি সমান পি আমি ।
অন্যথা, আপনি বিমূঢ় পারে আউটপুট কখনো কখনো মনোনীত ঘটনা প্রতিস্থাপন ডিথারিং আলগোরিদিম ট একটি র্যান্ডম এক (কাঁচা ওজন অনুযায়ী মনোনীত সঙ্গে পি আমি )। যতক্ষণ আপনি দ্বিতীয় ধাপে আউটপুট নেওয়ার সাথে সাথে পদক্ষেপ 3 তে একই কে ব্যবহার করেন ততক্ষণে দুরন্ত প্রক্রিয়াটি এমনকি এলোমেলো ওঠা-নামাও করতে পারে।
উদাহরণস্বরূপ, প্রতিটি ইভেন্টের 10% সুযোগ এলোমেলোভাবে নির্বাচিত হওয়ার সাথে এখানে কয়েকটি উদাহরণ আউটপুট দেওয়া হয়েছে:
B A C A B A B A C B A A B B A B A B A B C B A B A B C A B A
এবং প্রতিটি আউটপুট এলোমেলো হওয়ার 50% সুযোগ সহ এখানে একটি উদাহরণ রয়েছে:
C B A B A C A B B B A A B A A A A A B B A C C A B B A B B C
এছাড়াও আপনি উপরে বর্ণিত একটি ডেক মিশ পুকুর / মধ্যে বিশুদ্ধরূপে র্যান্ডম এবং ডিথারকৃত ঘটনা একটি মিশ্রণ খাওয়ানোর বিবেচনা করতে পারে, অথবা সম্ভবত চয়ন করে ডিথারিং অ্যালগরিদম randomizing ট এলোমেলোভাবে, যেমন দ্বারা তুলিত ই আমি গুলি (শূন্য হিসাবে নেতিবাচক ওজন চিকিত্সা)।
গীত। তুলনা করার জন্য এখানে একই গড় হারের সাথে কয়েকটি সম্পূর্ণ র্যান্ডম ইভেন্ট সিকোয়েন্স রয়েছে:
A C A A C A B B A A A A B B C B A B B A B A B A A A A A A A
B C B A B C B A A B C A B A B C B A B A A A A B B B B B B B
C A A B A A B B C B B B A B A B A A B A A B A B A C A A B A
স্পর্শকাতর: যেহেতু ডেক-ভিত্তিক সমাধানগুলির জন্য ডেকটি পুনরায় পূরণের আগে খালি রাখতে দেওয়া প্রয়োজন, কিনা সে সম্পর্কে মন্তব্যগুলিতে কিছু বিতর্ক হয়েছে , তাই আমি বেশ কয়েকটি ডেক-ফিলিং কৌশলগুলির একটি গ্রাফিকাল তুলনা করার সিদ্ধান্ত নিয়েছি:
আধা-এলোমেলো মুদ্রা উত্পন্ন করার জন্য বেশ কয়েকটি কৌশলের প্লট ফ্লিপ হয় (গড়তে লেজ 50-50 এর মাথার অনুপাত সহ)। অনুভূমিক অক্ষগুলি হ'ল ফ্লিপের সংখ্যা, উল্লম্ব অক্ষটি প্রত্যাশিত অনুপাত থেকে সংক্ষিপ্ত দূরত্ব, (মাথা - লেজ) / 2 = মাথা - ফ্লিপ / 2 হিসাবে পরিমাপ করা হয়।
প্লটের লাল এবং সবুজ রেখাগুলি তুলনার জন্য দুটি নন-ডেক-ভিত্তিক অ্যালগরিদম দেখায়:
- লাল রেখা, নির্জনবাদী দমন : সম -সংখ্যাযুক্ত ফলাফলগুলি সর্বদা প্রধান, বিজোড়-সংখ্যাযুক্ত ফলাফল সর্বদা লেজ থাকে।
- সবুজ রেখা, স্বতন্ত্র এলোমেলো ফ্লিপ : প্রতিটি ফলাফল 50% মাথা এবং 50% লেজ হওয়ার সম্ভাবনা সহ এলোমেলোভাবে স্বাধীনভাবে নির্বাচিত হয়।
অন্য তিনটি লাইন (নীল, বেগুনি এবং সায়ান) তিনটি ডেক-ভিত্তিক কৌশলগুলির ফলাফল দেখায়, প্রতিটি 40 টি কার্ডের একটি ডেক ব্যবহার করে প্রয়োগ করা হয়, যা প্রাথমিকভাবে 20 "হেড" কার্ড এবং 20 "লেজ" কার্ড দ্বারা পূর্ণ হয়:
- নীল রেখা, খালি হলে পূরণ করুন : ডেক খালি না হওয়া পর্যন্ত কার্ডগুলি এলোমেলোভাবে আঁকা হয়, তারপরে ডেকটি 20 "হেড" কার্ড এবং 20 "লেজ" কার্ড দিয়ে পুনরায় পূরণ করা হবে।
- বেগুনি রেখা, অর্ধেক শূন্য হলে পূরণ করুন : ডেকের 20 টি কার্ড না ফেলে অবধি কার্ডগুলি এলোমেলোভাবে আঁকানো হবে; তারপরে ডেকটি 10 "হেড" কার্ড এবং 10 "লেজ" কার্ড সহ শীর্ষে রয়েছে।
- সায়ান লাইন, ক্রমাগত পূরণ করুন : কার্ড এলোমেলোভাবে আঁকা হয়; সম-সংখ্যাযুক্ত অঙ্কনগুলি তত্ক্ষণাত্ একটি "মাথা" কার্ডের সাথে প্রতিস্থাপন করা হবে, এবং একটি "লেজ" কার্ডের সাথে বিজোড়-সংখ্যাযুক্ত অঙ্কন হবে।
অবশ্যই, উপরের প্লটটি কেবল একটি এলোমেলো প্রক্রিয়াটির একক উপলব্ধি, তবে এটি যুক্তিযুক্তভাবে প্রতিনিধি। বিশেষত, আপনি দেখতে পাচ্ছেন যে সমস্ত ডেক-ভিত্তিক প্রক্রিয়াগুলি সীমিত পক্ষপাতিত্ব করে, এবং রেড (ডিটারমিনিস্টিক) লাইনের সাথে মোটামুটি কাছাকাছি থাকে, যেখানে নিখুঁতভাবে এলোমেলো সবুজ রেখাটি বিচ্ছিন্ন হয়ে যায়।
(প্রকৃতপক্ষে, শূন্য থেকে দূরে নীল, বেগুনি এবং সায়ান লাইনগুলির বিচ্যুতি ডেক আকারের সাথে কঠোরভাবে আবদ্ধ হয়: নীল লাইনটি শূন্য থেকে 10 ধাপের বেশি দূরে কখনই প্রবাহিত হতে পারে না, বেগুনি লাইনটি শূন্য থেকে কেবল 15 ধাপ দূরে পেতে পারে , এবং সায়ান লাইনটি শূন্য থেকে প্রায় 20 ধাপ দূরে সরে যেতে পারে practice অবশ্যই বাস্তবে, কোনও লাইন প্রকৃতপক্ষে তার সীমাতে পৌঁছানোর সম্ভাবনা খুব কমই রয়েছে, কারণ তারা খুব দূরে ঘুরে বেড়ালে তাদের শূন্যের কাছাকাছি ফিরে যাওয়ার প্রবল প্রবণতা রয়েছে there's বন্ধ।)
এক নজরে, বিভিন্ন ডেক-ভিত্তিক কৌশলগুলির মধ্যে কোনও স্পষ্ট পার্থক্য নেই (যদিও গড় হিসাবে নীল রেখাটি লাল রেখার কিছুটা কাছাকাছি থাকে এবং সায়ান লাইনটি কিছুটা দূরে থাকে), তবে নীল লাইনের একটি আরও ঘনিষ্ঠ পরিদর্শন একটি স্বতন্ত্র নির্নায়ক প্যাটার্ন প্রকাশ করে: প্রতি 40 টি অঙ্কন (বিন্দু ধূসর উল্লম্ব লাইন দ্বারা চিহ্নিত), নীল রেখাটি শূন্যের সাথে লাল রেখার সাথে মিলিত হয়। বেগুনি এবং সায়ান লাইনগুলি এত কঠোরভাবে সীমাবদ্ধ নয় এবং যে কোনও সময়ে শূন্য থেকে দূরে থাকতে পারে।
সমস্ত ডেক-ভিত্তিক কৌশলগুলির জন্য, গুরুত্বপূর্ণ বৈশিষ্ট্য যা তাদের প্রকরণকে সীমাবদ্ধ রাখে তা হ'ল সত্য যে কার্ডগুলি ডেক থেকে এলোমেলোভাবে আঁকানো হয়, ডেকটি নির্বিচারে পুনরায় পরিপূর্ণ করা হয়। ডেকটি রিফিল করার জন্য ব্যবহৃত কার্ডগুলি যদি এলোমেলোভাবে বেছে নেওয়া হয়, তবে ডেক-ভিত্তিক সমস্ত কৌশল খাঁটি র্যান্ডম পছন্দ (সবুজ রেখা) থেকে পৃথক হয়ে উঠবে।