(কারণ এটি পোস্ট করা অন্যান্য সমাধানগুলির তুলনায় আমি স্বতন্ত্র, যদিও আমি পোস্ট করেছি এমন একটি সমাধান, আমি এটিকে পৃথক প্রতিক্রিয়া হিসাবে প্রস্তাব করছি)।
আপনি সেকেন্ডে (বা তার চেয়ে কম) সঠিক বিতরণ গণনা করতে পারেন তবে পি এর যোগফল ছোট হয়।
আমরা ইতিমধ্যে পরামর্শগুলি দেখেছি যে বিতরণটি প্রায় গাউসিয়ান (কিছু পরিস্থিতিতে)) বা পোইসন (অন্যান্য পরিস্থিতিতে থাকতে পারে)। যে কোনও উপায়ে, আমরা জানি যে এর অর্থ হল এবং এর এর যোগফল এর যোগফল । অতএব বন্টন তার গড় কয়েক স্ট্যান্ডার্ড ডেভিয়েশন মধ্যে ঘনীভূত হবে বলে সঙ্গে এসডিএস 4 এবং 6 বা ঐ স্থানের কাছাকাছি মধ্যে। অতএব আমরা কেবল সম্ভাব্যতা যে সমষ্টি গনা প্রয়োজন সমান (একটি পূর্ণসংখ্যা) জন্য মাধ্যমে । যখন বেশিরভাগপি আমি σ 2 পি আমি ( 1 - পি আমি ) z- র z- র এক্স ট ট = μ - z- র σ ট = μ + + z- র σ পি আমি σ 2 μ ট [ μ - z- র √μpiσ2pi(1−pi)zzXkk=μ−zσk=μ+zσpiছোট, প্রায় সমান (তবে এর চেয়ে কিছুটা কম) , সুতরাং রক্ষণশীল হতে আমরা ব্যবস্থায় এর জন্য গণনা করতে পারি । উদাহরণস্বরূপ, যখন এর সমষ্টি সমান এবং নির্বাচন অর্ডার ভাল মুদ্রার উলটা পিঠ আবরণ, আমরা কভার করতে গণনার প্রয়োজন হবে মধ্যে = , যা কেবল ২৮ টি মান।σ2μkপিi9জেড=6কে[9-6 √[μ−zμ−−√,μ+zμ−−√]pi9z=6k[0,27][9−69–√,9+69–√][0,27]
বিতরণ পুনরাবৃত্তি গণনা করা হয় । যাক প্রথম এর সমষ্টি বিতরণের হতে এই বের্নুলির ভেরিয়েবল। কোন থেকে মাধ্যমে , প্রথম এর সমষ্টি ভেরিয়েবল সমান করতে দুই পারস্পরিক একচেটিয়া উপায়ে: প্রথম এর সমষ্টি ভেরিয়েবল সমান এবং হয় বা অন্য প্রথম এর সমষ্টি ভেরিয়েবল সমান এবং হয় । অতএব i j 0 i + 1 i + 1 j i j i + 1 st 0 i j - 1 i + 1 st 1fiij0i+1i+1jiji+1st0ij−1i+1st1
fi+1(j)=fi(j)(1−pi+1)+fi(j−1)pi+1.
আমাদের কেবলমাত্র এই গণনাটি থেকে ব্যবধানে অবিচ্ছেদ্য এর জন্যসর্বাধিক ( 0 , μ - z √) √j μ+z √max(0,μ−zμ−−√) μ+zμ−−√.
যখন বেশিরভাগ ক্ষুদ্র হয় (তবে এখনও যুক্তিসঙ্গত নির্ভুলতার সাথে থেকে পৃথক ) তবে এই পদ্ধতির আমি পূর্বে পোস্ট করা সমাধানটিতে ব্যবহৃত ভাসমান পয়েন্ট রাউন্ডঅফ ত্রুটির বিশাল সংশ্লেষের সাথে জর্জরিত নয়। অতএব, প্রসারিত-নির্ভুলতা গণনার প্রয়োজন হয় না। উদাহরণস্বরূপ, সম্ভাব্য অ্যারের জন্য একটি ডাবল-স্পষ্টতা গণনা ( , থেকে মধ্যে অঙ্কের সম্ভাবনার জন্য গণনা প্রয়োজন 1 - পি আই 1 2 16 পি আই = 1 / ( আই + 1 ) μ = 10.6676 0 31 3 × 10 - 15 জেড = 6 3.6 × 10 - 8pi1−pi1216pi=1/(i+1)μ=10.6676031) এক্সেল 2002 এর সাথে ম্যাথমেটিকা 8 এবং 1-2 সেকেন্ডের সাথে 0.1 সেকেন্ড নিয়েছিল (উভয়ই একই উত্তর পেয়েছে)। (ম্যাথামেটিকাল মধ্যে) চতুর্গুণ স্পষ্টতা সঙ্গে এটি পুনরায় 2 সেকেন্ডের সম্পর্কে লেগেছিল তবে বেশি করে যে কোনো উত্তর পরিবর্তন না করে । উপরের লেজের মধ্যে এসডিগুলিতে বিতরণ বন্ধ করে মোট সম্ভাবনার মাত্র only হারিয়েছে ।3×10−15z=63.6×10−8
0 এবং 0.001 ( ) এর মধ্যে 40,000 ডাবল স্পষ্টতা র্যান্ডম মানগুলির অ্যারের জন্য অন্য গণনা গণিতের সাথে 0.08 সেকেন্ড সময় নিয়েছিল।μ=19.9093
এই অ্যালগরিদম সমান্তরাল। কেবলমাত্র র সেটটি প্রায় সমান আকারের বিচ্ছিন্ন সাবসেটগুলিতে বিভক্ত করুন, প্রতিটি প্রসেসরের জন্য একটি। প্রতিটি সাবসেটের জন্য বিতরণ গণনা করুন, তারপরে পুরো উত্তরটি পেতে ফলাফলগুলি সমাধান করুন (যদি আপনি চান এফএফটি ব্যবহার করে, যদিও এই স্পিডআপটি সম্ভবত অপ্রয়োজনীয়)। বড় হয়ে গেলেও, এটি আপনাকে ব্যবহারিকভাবে ব্যবহারিক করে তোলে , যখন আপনাকে লেজগুলি ( লার্জ) থেকে আরও দূরে সন্ধান করা প্রয়োজন , এবং / অথবা বড় হয়। μ z npiμzn
প্রসেসরের সাথে ভেরিয়েবলগুলির একটি অ্যারের সময় । গণিতের গতি প্রতি সেকেন্ডে এক মিলিয়ন অর্ডার হয়। উদাহরণস্বরূপ, প্রসেসরের সাথে, তারতম্য, মোট সম্ভাব্যতা এবং স্ট্যান্ডার্ড বিচ্যুতির উপরের লেজের মধ্যে যেতে হবে, মিলিয়ন: কম্পিউটিং সময় কয়েক সেকেন্ড চিত্র। আপনি যদি এটি সংকলন করেন তবে আপনি পারফরম্যান্সটির দুটি আদেশের ক্রমকে গতি বাড়িয়ে তুলতে পারেন।এম ও ( এন ( μ + জেড √) √nmএম=1এন=20000μ=100জেড=6এন(μ+জেড √) √O(n(μ+zμ−−√)/m)m=1n=20000μ=100z=6n(μ+zμ−−√)/m=3.2
ঘটনাচক্রে, এই পরীক্ষাগুলির ক্ষেত্রে, বিতরণের গ্রাফগুলি স্পষ্টত কিছু ইতিবাচক ত্রুটি দেখিয়েছিল: এগুলি স্বাভাবিক নয়।
রেকর্ডের জন্য, এখানে একটি গাণিতিক সমাধান:
pb[p_, z_] := Module[
{\[Mu] = Total[p]},
Fold[#1 - #2 Differences[Prepend[#1, 0]] &,
Prepend[ConstantArray[0, Ceiling[\[Mu] + Sqrt[\[Mu]] z]], 1], p]
]
( এনবি এই সাইটের দ্বারা প্রয়োগ করা রঙ কোডিং ম্যাথমেটিক কোডের জন্য অর্থহীন particular বিশেষত ধূসর জিনিস কোনও মন্তব্য নয় : এখানেই সমস্ত কাজ শেষ হয়েছে!)
এর ব্যবহারের একটি উদাহরণ
pb[RandomReal[{0, 0.001}, 40000], 8]
সম্পাদন করা
এই পরীক্ষার ক্ষেত্রে ম্যাথমেটিকেরR
চেয়ে একটি সমাধান দশগুণ ধীর - সম্ভবত আমি এটিকে সর্বোত্তমভাবে কোড করি নি - তবে এটি দ্রুত কার্যকর হয় (প্রায় এক সেকেন্ড):
pb <- function(p, z) {
mu <- sum(p)
x <- c(1, rep(0, ceiling(mu + sqrt(mu) * z)))
f <- function(v) {x <<- x - v * diff(c(0, x));}
sapply(p, f); x
}
y <- pb(runif(40000, 0, 0.001), 8)
plot(y)