আমি এটি করার জন্য কিছু কোড লিখেছিলাম । এর সংক্ষিপ্তসারটি দুর্ভাগ্যর ধারাগুলি সংশোধন করতে পরিসংখ্যানগুলি ব্যবহার করছে। আপনি যেভাবে এটি করতে পারবেন তা হল ঘটনাটি কতবার ঘটেছে তার উপর নজর রাখা এবং এটি পিআরএনজি দ্বারা উত্পাদিত সংখ্যার পক্ষপাতিত্ব করতে।
প্রথমত, আমরা কীভাবে ইভেন্টের শতাংশের উপর নজর রাখি? এটি করার সহজ উপায় হ'ল সর্বদা স্মৃতিতে উত্পন্ন সমস্ত নম্বর রাখা এবং সেগুলি গড়িয়ে দেওয়া: যা কাজ করবে তবে মারাত্মকভাবে অক্ষম। একটু চিন্তাভাবনার পরে আমি নিম্নলিখিতগুলি নিয়ে এসেছি (যা মূলত একটি ক্রমবর্ধমান গড় )।
নিম্নলিখিত পিআরএনজি নমুনাগুলি নিন (যেখানে আমরা নমুনাটি = = 0.5 হয় তবে)
Values: 0.1, 0.5, 0.9, 0.4, 0.8
Events: 0 , 1 , 1 , 0 , 1
Percentage: 60%
লক্ষ্য করুন যে প্রতিটি মান চূড়ান্ত ফলাফলের 1/5 অবদান রাখে। আসুন এটি অন্যভাবে দেখুন:
Values: 0.1, 0.5
Events: 0 , 1
লক্ষ্য করুন যে 0
মানটির 1
50% এবং অবদানের 50% অবদান রয়েছে। কিছুটা এগিয়ে নেওয়া:
Values: [0.1, 0.5], 0.9
Events: [0 , 1 ], 1
এখন প্রথম মানগুলি মানের 66% এবং শেষ 33% অবদান রাখে। আমরা নিম্নলিখিত পদ্ধতিতে এটি মূলত নিঃশেষ করতে পারি:
result = // 0 or 1 depending on the result of the event that was just generated
new_samples = samples + 1
average = (average * samples / new_samples) + (result * 1 / new_samples)
// Essentially:
average = (average * samples / new_samples) + (result / new_samples)
// You might want to limit this to, say, 100.
// Leaving it to carry on increasing can lead to unfairness
// if the game draws on forever.
samples = new_samples
এখন আমাদের পিআরএনজি থেকে প্রাপ্ত নমুনার ফলাফলের পক্ষপাতিত্ব করা দরকার, কারণ আমরা এখানে শতকরা একটি সুযোগের জন্য যাচ্ছি এখানে জিনিসগুলি অনেক সহজ (বনাম, বলুন, একটি আরটিএসে এলোমেলো পরিমাণ ক্ষতি)। এটি ব্যাখ্যা করা শক্ত হতে চলেছে কারণ এটি 'সবেমাত্র আমার কাছে ঘটেছে'। যদি গড় কম হয় তবে এর অর্থ হ'ল আমাদের ঘটনার সম্ভাবনা বাড়াতে এবং ভিসা বিপরীতে হওয়া দরকার। তাই কিছু উদাহরণ
average = 0.1
desired = 0.5
corrected_chance = 83%
average = 0.2
desired = 0.5
corrected_chance = 71%
average = 0.5
desired = 0.5
corrected_change = 50%
এখন আমার কাছে যা ঘটেছিল তা হ'ল প্রথম উদাহরণে 83% ছিল "0.6 এর মধ্যে 0.5" "(অন্য কথায়" 0.5 এর বাইরে 0.5 প্লাস 0.1 ")। এলোমেলো ইভেন্টের পদগুলির অর্থ যার অর্থ:
procced = (sample * 0.6) > 0.1
// or
procced = (sample * 0.6) <= 0.5
সুতরাং কোনও ইভেন্ট তৈরি করতে আপনি মূলত নিম্নলিখিত কোডটি ব্যবহার করবেন:
total = average + desired
sample = rng_sample() * total // where the RNG provides a value between 0 and 1
procced = sample <= desired
এবং সেইজন্য আপনি কোডটি আমি পেয়েছি যা আমি টুকরো টুকরো করে বলছি। আমি পুরোপুরি নিশ্চিত যে এগুলি সমস্ত এলোমেলো ক্ষয়ক্ষতির ক্ষেত্রে ব্যবহার করা যেতে পারে তবে আমি তা বের করার জন্য সময় নিই না।
দাবি অস্বীকার: এটি সমস্ত গৃহ-পরিসংখ্যান, ক্ষেত্রের আমার কোনও শিক্ষা নেই। আমার ইউনিট পরীক্ষা পাস যদিও।