মন্টে কার্লো সিমুলেশন ব্যবহার করে আনুমানিক


35

আমি সম্প্রতি মন্টি কার্লো সিমুলেশনটি দেখছি এবং এটি আনুমানিক ধ্রুবক যেমন (আয়তক্ষেত্রের অভ্যন্তরের বৃত্ত, সমানুপাতিক অঞ্চল) এ ব্যবহার করছি।π

যাইহোক, আমি মন্টে কার্লো ইন্টিগ্রেশন ব্যবহার করে [ইউলারের সংখ্যা] এর মান প্রায় অনুমানের সম্পর্কিত পদ্ধতি সম্পর্কে ভাবতে অক্ষম ।e

এটি কীভাবে করা যায় তাতে আপনার কোনও পয়েন্টার রয়েছে?


7
এটি করার অনেকগুলি উপায় রয়েছে। Rআদেশটি কী করে তা চিন্তা করেই এটি স্পষ্ট হয়ে উঠতে 2 + mean(exp(-lgamma(ceiling(1/runif(1e5))-1)))পারে। (যদি গামা ফাংশন বিরক্তির লগ ব্যবহার করে আপনি এটি দ্বারা প্রতিস্থাপন 2 + mean(1/factorial(ceiling(1/runif(1e5))-2)), যা শুধুমাত্র সংযোজন গুণন, বিভাজন, এবং ছাঁটাই ব্যবহার করে এবং উপেক্ষা ওভারফ্লো সতর্কবার্তা।) বৃহত্তর সুদ হতে পারে হবে কি দক্ষ সিমিউলেশন: আপনি সংখ্যা হ্রাস করা যেতে পারে কোনও প্রদত্ত নির্ভুলতার জন্য অনুমান করার জন্য গণনামূলক পদক্ষেপগুলি প্রয়োজন ? e
whuber

4
কি আনন্দময় প্রশ্ন! আমি অন্যের উত্তর পড়ার অপেক্ষায় রয়েছি আপনি এই প্রশ্নটির দিকে সত্যই মনোযোগ আকর্ষণ করতে পারেন এমন একটি উপায় - সম্ভবত আরও অর্ধ-ডজন উত্তর - প্রশ্নটি পুনর্বিবেচনা করা এবং দক্ষ উত্তরগুলি জিজ্ঞাসা করা হবে , যেমনটি তীব্র পরামর্শ দেয়। এটি সিভি ব্যবহারকারীদের জন্য ক্যাটনিপের মতো।
সাইকোরাক্স মনিকাকে পুনরায়

1
@ ইঙ্গারস্টুডেন্ট আমি নিশ্চিত নই যে জ্যামিতিক এনালগ জন্য বিদ্যমান । এটি কেবল প্রাকৃতিকভাবে (পাং উদ্দেশ্যে) জ্যামিতিক পরিমাণ \ পাই এর মতো নয় । eπ
আকসকল

6
@ আকসকল e একটি ব্যতিক্রমী জ্যামিতিক পরিমাণ। অতি প্রাথমিক স্তরে এটি হাইপারবোলা সম্পর্কিত ক্ষেত্রগুলির জন্য প্রকাশ্যে প্রাকৃতিকভাবে প্রদর্শিত হয়। কিছুটা আরও উন্নত স্তরে এটি ত্রিকোণমিত্রিক ফাংশন সহ সমস্ত পর্যায়ক্রমিক ক্রিয়াকলাপের সাথে ঘনিষ্ঠভাবে সংযুক্ত থাকে, যার জ্যামিতিক সামগ্রী সুস্পষ্ট। এখানে আসল চ্যালেঞ্জ হ'ল ই এর সাথে সম্পর্কিত মানগুলি অনুকরণ করা এত সহজ ! e
whuber

2
@ স্ট্যাটস স্টুডেন্ট: নিজে থেকে আকর্ষণীয় নয়। যাইহোক, যদি এটি মতো পরিমাণের নিরপেক্ষ অনুমানের দিকে নিয়ে যায় তবে এটি অ্যালগরিদমের পক্ষে সবচেয়ে কার্যকর প্রমাণিত হতে পারে। e
exp{0xf(y)dG(y)}
শি'য়ান

উত্তর:


34

মন্টে কার্লো দ্বারা অনুমান করার সহজ এবং মার্জিত উপায়টি এই কাগজে বর্ণিত হয়েছে । কাগজটি আসলে শেখানোর বিষয়ে । সুতরাং, পদ্ধতির আপনার লক্ষ্যটির জন্য পুরোপুরি উপযুক্ত seems ধারণাটি গেনডেনকোর সম্ভাব্যতা তত্ত্ব সম্পর্কিত একটি জনপ্রিয় রাশিয়ান পাঠ্যপুস্তকের অনুশীলনের উপর ভিত্তি করে । P.183 তে প্রাক্তন.22 দেখুনee

এটি ঘটে যাতে , যেখানে একটি এলোমেলো পরিবর্তনীয় যা নীচে সংজ্ঞায়িত হয়। এটি সর্বনিম্ন মতো ন্যূনতম সংখ্যা এবং অভিন্ন বিতরণ থেকে এলোমেলো সংখ্যা । সুন্দরী, তাই না ?!E[ξ]=eξni=1nri>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


বাহ, দুর্দান্ত! আপনি কেন অনুধাবন করে একটি অনুচ্ছেদে বা দুটি যোগ করতে পারেন?
সাইকোরাক্স মনিকা

7
(+1) উজ্জ্বল! উত্তরটি সর্বোচ্চ চিহ্নের দাবি রাখে কারণ এটি কেবল অভিন্ন সিমুলেশনের উপর নির্ভর করে। এবং কোনও অনুমান ব্যবহার করে না তবে মন্টি কার্লোর কারণে এটি। এটি Gnedenko এর সাথে আবার সংযোগ স্থাপন করা এটি আরও সুবিধাজনক।
শি'য়ান

2
শান্ত! এখানে ওয়ান-লাইনার হিসাবে ম্যাথামেটিকা কোডটি রয়েছে:
Mean[Table[ Length[NestWhileList[(Random[]+#) &, Random[], #<1&]], {10^6}]]
নেকড়েরা

4
@ ওল্ফিজস শি'ানের Rউত্তরে পোস্ট করা সমাধানটির সরাসরি অনুবাদটি বিশ গুণ দ্রুততর:n=10^6; 1. / Mean[UnitStep[Differences[Sort[RandomReal[{0, n}, n + 1]]] - 1]]
হুবুহু

1
আমি "কেন মানে ?" পোস্ট করেছি প্রশ্নটি তার নিজস্ব প্রশ্নে ; আমার সন্দেহ হয় যে আমার স্কেচ সমাধানটি (যা তাত্ক্ষণিকভাবে সমস্যার "স্পষ্ট" দৃষ্টিভঙ্গি হিসাবে মনে মনে আসল) অগত্যা যেভাবে রাশিয়ান শিক্ষার্থীরা এটি করার ইচ্ছা করেছিল তা নয়! সুতরাং বিকল্প সমাধান খুব স্বাগত হবে। e
সিলভারফিশ

19

আমি আকসালের উত্তরটিকে উজ্জীবিত করার পরামর্শ দিচ্ছি। এটি নিরপেক্ষ এবং শুধুমাত্র ইউনিট ইউনিফর্ম বিচ্যুত করার পদ্ধতিতে নির্ভর করে।

আমার উত্তরটি নির্বিচারে সুনির্দিষ্ট করা যেতে পারে তবে সত্যিকারের মূল্য থেকে দূরে রয়েছে ।e

শি'র উত্তরটি সঠিক, তবে আমি মনে করি ফাংশন বা পোইসন এলোমেলো বিচ্যুতি উত্পন্ন করার কোনও উপায়ের উপর এর নির্ভরতা কিছুটা বিজ্ঞপ্তি যখন উদ্দেশ্যটি আনুমানিক ই হয়loge

বুটস্ট্র্যাপিং দ্বারা অনুমান করাe

পরিবর্তে, বুটস্ট্র্যাপিং পদ্ধতিটি বিবেচনা করুন। এক বস্তুর সংখ্যক হয়েছে যা একটি নমুনা আকার প্রতিস্থাপন সঙ্গে টানা হয় এন । প্রতিটি ড্র এ, সম্ভাবনা না একটি নির্দিষ্ট বস্তুর অঙ্কন আমি হয় 1 - এন - 1 , এবং আছে এন যেমন স্বপক্ষে। কোনও নির্দিষ্ট অবজেক্টকে সমস্ত অঙ্কন থেকে বাদ দেওয়ার সম্ভাবনা হ'ল পি = ( 1 - 1)nni1n1np=(11n)n.

কারণ আমি ধরে নিচ্ছি আমরা জানি যে

exp(1)=limn(11n)n

তাই আমরা লিখতে পারেন

exp(1)p^=i=1mIiBjm

অর্থাৎ আমাদের অনুমান সম্ভাব্যতা যা নির্দিষ্ট কোনো পর্যবেক্ষণ থেকে বাদ দেওয়া হয় আনুমানিক হিসাব দ্বারা পাওয়া যায় মি বুটস্ট্র্যাপ প্রতিলিপি বি বস্তুর ঘটনা ঘটার ভগ্নাংশ অর্থাত - এইরকম আরও অনেক প্রতিলিপি জুড়ে আমি একক প্রয়াস হবে।pmBji

এই সমীকরণে ত্রুটির দুটি উত্স রয়েছে। সীমাবদ্ধ অর্থ সর্বদা ফলাফল আনুমানিক, অর্থাৎ অনুমানটি পক্ষপাতদুষ্ট। উপরন্তু, পি সত্য মান প্রায় ওঠানামা কারণ এই একটি সিমুলেশন।np^

কারণ স্নাতক বা পর্যাপ্ত সামান্য করতে সঙ্গে অন্য ব্যক্তির আনুমানিক পারে আমি এই পদ্ধতির কিছুটা কমনীয় খুঁজে তাসের তাড়ার, ছোট পাথরের থাম, অথবা হাতে অন্য কোন আইটেম ব্যবহার করে, একই শিরা মধ্যে যেমন একজন ব্যক্তির অনুমান পারে π ব্যবহার একটি কম্পাস, একটি সোজা প্রান্ত এবং বালি কিছু শস্য। আমি মনে করি কম্পিউটারের মতো আধুনিক সুযোগসুবিধা থেকে গণিতকে যখন তালাক দেওয়া যায় তখন এটি খুব ঝরঝরে।eπ

ফলাফল

আমি বিভিন্ন সংখ্যার বুটস্ট্র্যাপ প্রতিলিপি জন্য বিভিন্ন সিমুলেশন পরিচালনা করেছি। স্ট্যান্ডার্ড ত্রুটিগুলি স্বাভাবিক বিরতিগুলি ব্যবহার করে অনুমান করা হয়।

মনে রাখবেন যে বুটস্ট্র্যাপ করা বস্তুর সংখ্যা এর পছন্দ ফলাফলের নির্ভুলতার উপর একটি নিখুঁত উপরের সীমা নির্ধারণ করে কারণ মন্টি কার্লো পদ্ধতি পি এবং পি অনুমান করে কেবল এন এর উপর নির্ভর করে । অপ্রয়োজনীয়ভাবে বড় হতে এন সেট করা কেবল আপনার কম্পিউটারকে আবদ্ধ করে দেবে, কারণ আপনার কেবল ই-র একটি "রুক্ষ" আনুমানিক প্রয়োজন হয় বা মন্টি কার্লোর কারণে বৈষম্যটি ভেদ করে দেওয়া হবে। এই ফলাফলগুলি n = 10 3 এর জন্য এবং p - 1e তৃতীয় দশমিকের সাথে সঠিক।nppnnen=103p1e

এই চক্রান্ত শো পছন্দ যে স্থিতিশীলতার জন্য সরাসরি এবং গভীর ফলাফল করেছে পি । নীল ড্যাশযুক্ত লাইন শো পি এবং লাল লাইন শো । হিসাবে প্রত্যাশিত, নমুনা আকার বৃদ্ধি সদা আরো সঠিক অনুমান উত্পাদন করে পিmp^pep^এখানে চিত্র বর্ণনা লিখুন

আমি এর জন্য বিব্রতকরভাবে দীর্ঘ আর স্ক্রিপ্ট লিখেছিলাম। উন্নতির জন্য পরামর্শগুলি $ 20 বিলের পিছনে জমা দেওয়া যেতে পারে।

library(boot)
library(plotrix)
n <- 1e3

## if p_hat is estimated with 0 variance (in the limit of infinite bootstraps), then the best estimate we can come up with is biased by exactly this much:
approx <- 1/((1-1/n)^n)

dat <- c("A", rep("B", n-1))
indicator <- function(x, ndx)   xor("A"%in%x[ndx], TRUE) ## Because we want to count when "A" is *not* in the bootstrap sample

p_hat <- function(dat, m=1e3){
    foo <- boot(data=dat, statistic=indicator, R=m) 
    1/mean(foo$t)
} 

reps <- replicate(100, p_hat(dat))

boxplot(reps)
abline(h=exp(1),col="red")

p_mean <- NULL
p_var <- NULL
for(i in 1:10){
    reps <- replicate(2^i, p_hat(dat))
    p_mean[i] <- mean(reps)
    p_var[i] <- sd(reps)
}
plotCI(2^(1:10), p_mean, uiw=qnorm(0.975)*p_var/sqrt(2^(1:10)),xlab="m", log="x", ylab=expression(hat(p)), main=expression(paste("Monte Carlo Estimates of ", tilde(e))))
abline(h=approx, col='red')

4
+1 এটি অনেক অর্থবোধ করে। আপনি যদি নিজের কোডটি লিখে থাকেন তবে কোনও সুযোগটি কী সে ভাগ করতে পারবেন?
আন্তনি পরল্লদা

2
যদিও এই ইচ্ছামত সঠিক হতে পারে, শেষ পর্যন্ত এটা অসন্তোষজনক কারণ এটি শুধুমাত্র একটি simulates পড়তা করতে বদলে নিজেই। e
whuber

1
অবশ্যই। আপনি কেবলমাত্র অন্যটির অভ্যন্তরে এক অনুলিপি কল দিয়ে শেষ করবেন, যা আমাদের কাছে এখনকার মতো is
সাইকোরাক্স বলছেন মনিকা পুনরায়

1
@ তবে আমি তে নির্বিচারে নির্ভুলভাবে সান্নিধ্যের সাথে এক নির্বিচারে যথাযথ সান্নিধ্যের সাথে এবং নিজেই একটি নির্বিচারে নির্ভুলভাবে সান্নিধ্যের মধ্যে পার্থক্য দেখতে পাচ্ছি না ।
jwg

1
@jwg ধারণাগতভাবে গুরুত্বপূর্ণ হওয়ার পাশাপাশি এটি ব্যবহারিকভাবেও গুরুত্বপূর্ণ কারণ একটি আনুমানিক আনুমানিক বাস্তবায়নের জন্য দুটি আনুমানিকের প্রতিটিটির কতটা সঠিক তা ট্র্যাক করা প্রয়োজন। তবে আমার একমত হতে হবে যে যখন উভয় অনুমানটি গ্রহণযোগ্যভাবে ভাল হয়, তখন সামগ্রিক পন্থাটি সত্যই ভাল fine
whuber

14

সমাধান 1:

পোইসন বিতরণের জন্য, পি ( এক্স = কে ) = λ কেপি(λ) অতএব, যদি এক্স পি ( 1 ) , পি ( এক্স = 0 ) = পি ( এক্স = 1 ) = - 1 যার অর্থ আপনিকোনও পোইসন সিমুলেশন দ্বারা- 1 অনুমান করতে পারবেন। এবং পোইসন সিমুলেশনগুলি এক্সফোনেনশিয়াল ডিস্ট্রিবিউশন জেনারেটর (যদি সবচেয়ে দক্ষ পদ্ধতিতে না হয়) থেকে নেওয়া যেতে পারে।

পি(এক্স=)=λ!-λ
XP(1)
P(X=0)=P(X=1)=e1
e1

U(i:n)U(i1:n)B(1,n)

P(n{U(i:n)U(i1:n)}1)=(11n)n
e1n

সমাধান 2:

e

X1,X2iidN(0,1)
(X12+X22)χ12
(1/2)
পি(এক্স12+ +এক্স222)=1-{1-মেপুঃ(-2/2)}=-1
(এক্স1,এক্স2)এক্স12+ +এক্স222πএক্স12+ +এক্স22<1

সমাধান 3:

তোমার দর্শন লগ করা1,তোমার দর্শন লগ করা2,তোমার দর্শন লগ করাএন+ +1>তোমার দর্শন লগ করাএনএনএন-1মেপুঃজি(এক্স)-1

1/এন!এন

ফোর্সথির পদ্ধতির একটি দ্রুত আর বাস্তবায়ন হ'ল বৃহত্তর ব্লকের পক্ষে ইউনিফর্মের ক্রমটি যথাযথভাবে অনুসরণ করা, যা সমান্তরাল প্রক্রিয়াজাতকরণের অনুমতি দেয়:

use=runif(n)
band=max(diff((1:(n-1))[diff(use)>0]))+1
bends=apply(apply((apply(matrix(use[1:((n%/%band)*band)],nrow=band),
2,diff)<0),2,cumprod),2,sum)

12

5
(1)লগ1পি(1)

5
লগমেপুঃn <- 1e5; 1/mean(n*diff(sort(runif(n+1))) > 1)

3
xnnxixn1n1xi1nxi1n1xi

3
এন+ +1এন

7

সমাধান নয় ... কেবলমাত্র একটি দ্রুত মন্তব্য যা মন্তব্য বাক্সের জন্য খুব দীর্ঘ।

Aksakal

Aksakal একটি সমাধান যেখানে আমরা মান ইউনিফর্ম অঙ্কন যে গ্রহণ করা আবশ্যক, প্রত্যাশিত সংখ্যা গণনা পোস্ট যেমন যে তাদের যোগফল ছাড়িয়ে যাবে 1. ম্যাথামেটিকাল , আমার প্রথম সূত্র ছিল:

mrM := NestWhileList[(Random[] + #) &, Random[], #<1 &]

Mean[Table[Length[mrM], {10^6}]] 

সম্পাদনা: সবেমাত্র এটির সাথে একটি দ্রুত খেলা হয়েছিল এবং নিম্নলিখিত কোডগুলি (একই পদ্ধতি - এছাড়াও এমএমএ-তেও আলাদা কোড) প্রায় 10 গুণ দ্রুত হয়:

Mean[Table[Module[{u=Random[], t=1},  While[u<1, u=Random[]+u; t++]; t] , {10^6}]]

জিয়ান / হুইবার

জুইনের সমাধান 1 অনুকরণ করার জন্য হুইপার দ্রুত শীতল কোডের পরামর্শ দিয়েছে:

আর সংস্করণ: n <- 1e5; 1/mean(n*diff(sort(runif(n+1))) > 1)

এমএমএ সংস্করণ: n=10^6; 1. / Mean[UnitStep[Differences[Sort[RandomReal[{0, n}, n + 1]]] - 1]]

যা তিনি নোট করেছেন তা প্রথম কোডের চেয়ে 20 গুণ দ্রুত (বা উপরের নতুন কোডের চেয়ে দ্বিগুণ দ্রুত)।

কেবল মজাদার জন্য, আমি ভেবেছিলাম যে এটি উভয় পদ্ধতিরই দক্ষ (পরিসংখ্যানগত দিক থেকে) দক্ষ কিনা তা দেখতে আকর্ষণীয় হবে। এটি করার জন্য, আমি ই ব্যবহার করে 2000 এর প্রাক্কলন তৈরি করেছি:

  • আকসকলের পদ্ধতি: ডেটাএ
  • জিয়ান'র পদ্ধতি 1 টি হুইবার কোড ব্যবহার করে: ডেটাবি

... দুজনেই ম্যাথমেটিকায় । নিম্নলিখিত চিত্রটি ফলাফলের ডেটাএ এবং ডেটাবি ডাটা সেটগুলির একটি ননপ্যারামেট্রিক কার্নেল ঘনত্বের অনুমানের বিপরীতে।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং, যখন whuber কোড (লাল বক্ররেখা) প্রায় দ্বিগুণ দ্রুত, পদ্ধতিটি 'নির্ভরযোগ্য' হিসাবে দেখা যায় না।


সত্য মানের অবস্থানে একটি উল্লম্ব রেখাটি এই চিত্রটিকে ব্যাপকভাবে উন্নত করবে।
সাইকোরাক্স বলছেন মনিকা পুনরায়

1
এটি একটি খুব আকর্ষণীয় পর্যবেক্ষণ, আপনাকে ধন্যবাদ। যেহেতু অর্ধ-প্রস্থটি সিমুলেশনের আকারের সাথে চতুর্ভুজ আকারে স্কেল করবে এবং শি'ানের পদ্ধতির অর্ধ-প্রস্থটি অক্ষরের চেয়ে দ্বিগুণ, সুতরাং বহুবার পুনরাবৃত্তি চারগুণ চালানো তাদেরকে সমানভাবে নির্ভুল করে তুলবে। প্রতিটি পুনরাবৃত্তিতে কতটা প্রচেষ্টা দরকার তা প্রশ্ন থেকেই যায়: শি'ানের পদ্ধতির একটি পুনরাবৃত্তি যদি এক চতুর্থাংশের চেয়ে কম প্রচেষ্টা নেয়, তবে সেই পদ্ধতিটি আরও কার্যকর হবে।
whuber

1
এন

1
running four times as many iterations will make them equally accurate106106

1
কোডটি ভালভাবে সম্পন্ন করা হয়েছে - এটির মধ্যে আরও উন্নতি করা কঠিন হবে।
whuber

2

একটি অধর্ম পরিমাণে নমুনার প্রয়োজন পদ্ধতি

(এক্স)=এক্সএক্স¯12এন~˙এন(0,1)

এন(0,1)এক্স

এন(0,1)φ^(এক্স)φ((2))=(2π)-1/2-1=φ^(2)2π

22π

পদ্ধতিতে খুব কম কয়েকটি নমুনার প্রয়োজন হয় তবে সংখ্যক ত্রুটির পরিমাণে অদৃশ্য পরিমাণ সৃষ্টি করে

একটি সম্পূর্ণ নির্বোধ, তবে খুব দক্ষ, আমার দেওয়া মন্তব্যের ভিত্তিতে উত্তর:

এক্স~অভিন্ন(-1,1)ওয়াইএন=|(এক্স¯)এন|^=(1-ওয়াইএন)-1/ওয়াইএন

এটি খুব দ্রুত রূপান্তরিত করবে , তবে চূড়ান্ত সংখ্যাসূচক ত্রুটিতে চলে যাবে।

ওয়াইএন1/ওয়াইএনএনওয়াইএনওয়াইএন=0


2

1
@ হুইবার: প্রয়োজনীয় লগটি আমার বইয়ের সরাসরি সূচক হিসাবে রূপান্তরিত করার কারণে আমি বক্স-মুলারটি ব্যবহার করিনি। আমি প্রতিবিম্বিতভাবে কোস এবং পাপকে অনুমতি দিতাম , তবে এটি কেবল কারণ আমি এক মুহুর্তের জন্য জটিল বিশ্লেষণকে ভুলে গিয়েছিলাম, তাই ভাল বিষয়।
ক্লিফ এবি

1
এন1এন2φ(2)এন1এন2এন2এন1

2

এটি বেশ ধীরে ধীরে হলেও এটি করা যেতে পারে এমন অন্য উপায় Here আমি দক্ষতার জন্য কোনও দাবি করি না, তবে সম্পূর্ণতার চেতনায় এই বিকল্পটি সরবরাহ করি।

এনইউ1,,ইউএন~আইআইডি ইউ(0,1)

(আমি(ইউআমি1/)ইউআমি)=1/1তোমার দর্শন লগ করাতোমার দর্শন লগ করা=1।

তোমার দর্শন লগ করা(1)তোমার দর্শন লগ করা(এন)

এসএন()1এনΣআমি=11তোমার দর্শন লগ করা(আমি)সবার জন্য =1,,এন

মিসর্বনিম্ন{|এস()1}1/

^2তোমার দর্শন লগ করা(মি)+ +তোমার দর্শন লগ করা(মি+ +1)

1/

আর বাস্তবায়ন: পদ্ধতিটি অভিন্ন মান উত্পন্ন করতে Rব্যবহার runifকরা যেতে পারে । কোডটি নিম্নরূপ:

EST_EULER <- function(n) { U <- sort(runif(n), decreasing = TRUE);
                           S <- cumsum(1/U)/n;
                           m <- min(which(S >= 1));
                           2/(U[m-1]+U[m]); }

set.seed(1234);

EST_EULER(10^3);
[1] 2.715426

EST_EULER(10^4);
[1] 2.678373

EST_EULER(10^5);
[1] 2.722868

EST_EULER(10^6); 
[1] 2.722207

EST_EULER(10^7);
[1] 2.718775

EST_EULER(10^8);
[1] 2.718434

> exp(1)
[1] 2.718282

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.