মন্টে কার্লো দ্বারা অনুমান করার সহজ এবং মার্জিত উপায়টি এই কাগজে বর্ণিত হয়েছে । কাগজটি আসলে শেখানোর বিষয়ে । সুতরাং, পদ্ধতির আপনার লক্ষ্যটির জন্য পুরোপুরি উপযুক্ত seems ধারণাটি গেনডেনকোর সম্ভাব্যতা তত্ত্ব সম্পর্কিত একটি জনপ্রিয় রাশিয়ান পাঠ্যপুস্তকের অনুশীলনের উপর ভিত্তি করে । P.183 তে প্রাক্তন.22 দেখুনee
এটি ঘটে যাতে , যেখানে একটি এলোমেলো পরিবর্তনীয় যা নীচে সংজ্ঞায়িত হয়। এটি সর্বনিম্ন মতো ন্যূনতম সংখ্যা এবং অভিন্ন বিতরণ থেকে এলোমেলো সংখ্যা । সুন্দরী, তাই না ?!E[ξ]=eξn∑ni=1ri>1ri[0,1]
যেহেতু এটি একটি অনুশীলন, আমি নিশ্চিত নই যে এখানে সমাধান (প্রমাণ) পোস্ট করা আমার পক্ষে শীতল কিনা তা :) আপনি নিজেরাই প্রমাণ করতে চাইলে এখানে একটি পরামর্শ দেওয়া হয়েছে: অধ্যায়টিকে "মুহুর্ত" বলা হয়, যা নির্দেশ করা উচিত আপনি সঠিক দিকে।
আপনি যদি নিজে এটি বাস্তবায়ন করতে চান তবে আর পড়বেন না!
এটি মন্টি কার্লো সিমুলেশনের জন্য একটি সাধারণ অ্যালগরিদম। একটি অভিন্ন এলোমেলো আঁকুন, তারপরে যোগফল 1 ছাড়িয়ে না যাওয়া পর্যন্ত আরও একটি এবং অন্যটি আঁকুন এলোমেলো র্যান্ডমগুলির সংখ্যাটি আপনার প্রথম পরীক্ষা। ধরা যাক আপনি পেয়েছেন:
0.0180
0.4596
0.7920
তারপর আপনার প্রথম বিচারের 3. এই বিচারের করছেন রাখুন অনুষ্ঠিত, এবং আপনি লক্ষ্য করবেন যে গড় আপনি পেতে ।e
ম্যাটল্যাব কোড, সিমুলেশন ফলাফল এবং হিস্টোগ্রাম অনুসরণ করে।
N = 10000000;
n = N;
s = 0;
i = 0;
maxl = 0;
f = 0;
while n > 0
s = s + rand;
i = i + 1;
if s > 1
if i > maxl
f(i) = 1;
maxl = i;
else
f(i) = f(i) + 1;
end
i = 0;
s = 0;
n = n - 1;
end
end
disp ((1:maxl)*f'/sum(f))
bar(f/sum(f))
grid on
f/sum(f)
ফলাফল এবং হিস্টোগ্রাম:
2.7183
ans =
Columns 1 through 8
0 0.5000 0.3332 0.1250 0.0334 0.0070 0.0012 0.0002
Columns 9 through 11
0.0000 0.0000 0.0000
আপডেট: আমি পরীক্ষার ফলাফলের অ্যারে থেকে মুক্তি পেতে আমার কোড আপডেট করেছি যাতে এটি র্যাম না নেয়। আমি পিএমএফের অনুমানও মুদ্রণ করেছি।
আপডেট 2: এখানে আমার এক্সেল সমাধান। এক্সেলের একটি বোতাম রাখুন এবং এটি নিম্নলিখিত ভিবিএ ম্যাক্রোর সাথে লিঙ্ক করুন:
Private Sub CommandButton1_Click()
n = Cells(1, 4).Value
Range("A:B").Value = ""
n = n
s = 0
i = 0
maxl = 0
Cells(1, 2).Value = "Frequency"
Cells(1, 1).Value = "n"
Cells(1, 3).Value = "# of trials"
Cells(2, 3).Value = "simulated e"
While n > 0
s = s + Rnd()
i = i + 1
If s > 1 Then
If i > maxl Then
Cells(i, 1).Value = i
Cells(i, 2).Value = 1
maxl = i
Else
Cells(i, 1).Value = i
Cells(i, 2).Value = Cells(i, 2).Value + 1
End If
i = 0
s = 0
n = n - 1
End If
Wend
s = 0
For i = 2 To maxl
s = s + Cells(i, 1) * Cells(i, 2)
Next
Cells(2, 4).Value = s / Cells(1, 4).Value
Rem bar (f / Sum(f))
Rem grid on
Rem f/sum(f)
End Sub
D1 ঘরটিতে 1000 এর মতো পরীক্ষার সংখ্যা লিখুন এবং বোতামটি টিপুন। প্রথম রানের পরে স্ক্রিনটি কেমন দেখতে হবে তা এখানে:
আপডেট 3: সিলভারফিশ আমাকে অন্যভাবে অনুপ্রাণিত করেছিল, প্রথমটির মতো মার্জিত নয় তবে এখনও দুর্দান্ত। এটি ব্যবহার এন-simplexes এর ভলিউম গণনা Sobol সিকোয়েন্স।
s = 2;
for i=2:10
p=sobolset(i);
N = 10000;
X=net(p,N)';
s = s + (sum(sum(X)<1)/N);
end
disp(s)
2.712800000000001
ঘটনাচক্রে তিনি মন্টি কার্লো পদ্ধতিতে প্রথম বইটি লিখেছিলেন যা আমি হাই স্কুলে পড়েছিলাম। এটি আমার মতে পদ্ধতির সেরা পরিচয়।
আপডেট 4:
মন্তব্যে সিলভারফিশ একটি সাধারণ এক্সেল সূত্র বাস্তবায়নের পরামর্শ দিয়েছে। মোট 1 মিলিয়ন এলোমেলো সংখ্যা এবং 185 কে ট্রায়ালের পরে আপনি তার পদ্ধতির সাথে এই জাতীয় ফলাফল পান:
স্পষ্টতই, এটি এক্সেল ভিবিএ বাস্তবায়নের তুলনায় অনেক ধীর। বিশেষত, আপনি যদি আমার ভিবিএ কোডটি লুপের অভ্যন্তরে ঘরের মানগুলি আপডেট না করার জন্য সংশোধন করেন এবং সমস্ত পরিসংখ্যান সংগ্রহ হয়ে গেলে কেবল তা করেন।
আপডেট 5
সিয়ান এর সমাধান # 3 ঘনিষ্ঠভাবে সম্পর্কিত (অথবা থ্রেড প্রতি jwg এর মন্তব্য যেমন কিছু অর্থে এমনকি একই) করা হয়। প্রথমে ফোর্সিথ বা গ্যানেডেনকো ধারণাটি নিয়ে এসেছিলেন তা বলা শক্ত। রাশিয়ান ভাষায় গেনডেনকোর মূল 1950 সংস্করণে অধ্যায়গুলিতে সমস্যা বিভাগ নেই। সুতরাং, আমি এই সমস্যাটি প্রথম নজরে খুঁজে পাইনি যেখানে এটি পরবর্তী সংস্করণগুলিতে। সম্ভবত এটি পরে যুক্ত করা হয়েছে বা পাঠ্যে সমাধিস্থ করা হয়েছে।
শিয়ানের উত্তরে আমি যেমন মন্তব্য করেছি, ফোরসিথের দৃষ্টিভঙ্গি আরও একটি আকর্ষণীয় ক্ষেত্রের সাথে যুক্ত: র্যান্ডম (আইআইডি) সিকোয়েন্সগুলিতে শিখর (এক্সট্রিমার) মধ্যে দূরত্ব বন্টন। গড় দূরত্বটি 3 হিসাবে ঘটে ors
R
আদেশটি কী করে তা চিন্তা করেই এটি স্পষ্ট হয়ে উঠতে2 + mean(exp(-lgamma(ceiling(1/runif(1e5))-1)))
পারে। (যদি গামা ফাংশন বিরক্তির লগ ব্যবহার করে আপনি এটি দ্বারা প্রতিস্থাপন2 + mean(1/factorial(ceiling(1/runif(1e5))-2))
, যা শুধুমাত্র সংযোজন গুণন, বিভাজন, এবং ছাঁটাই ব্যবহার করে এবং উপেক্ষা ওভারফ্লো সতর্কবার্তা।) বৃহত্তর সুদ হতে পারে হবে কি দক্ষ সিমিউলেশন: আপনি সংখ্যা হ্রাস করা যেতে পারে কোনও প্রদত্ত নির্ভুলতার জন্য অনুমান করার জন্য গণনামূলক পদক্ষেপগুলি প্রয়োজন ?