PDA

View Full Version : تولید اعداد 0 و 1 با احتمال مساوی با استفاده از مولد 0 و 1 با احتمال نا معلوم



atilla snowman
چهارشنبه 30 مرداد 1387, 13:23 عصر
سلام دوستان
من به یک مساله بر خوردم که ذهنمو مشغول کرد ولی بی جواب موند.
این مساله اینه:
(لطفا با دقت بخونید)
ما یک مولد عدد رندم داریم که یا 0 و یا 1 بر میگردونه. این مولد به احتمال p یک برمیگردونه و به احتمال یک منهای p صفر که p هم بین صفر و یکه و البته ما p رو نمیدونیم و فقط اطمینان داریم که عدد ثابتیه.
میخوایم با استفاده از این مولد یک مولد عدد رندم بسازیم که یا یک یا صفر رو با احتمال مساوی یعنی یک دوم برمیگردونه.
راه حل بدی که سریعا به ذهن میرسه اینه که به صورت متوالی و به تعداد زیاد مولدی که داریم رو فراخوانی کنیم و با نتایجی که به دست میاد p رو تقریت بزنیم که چندان به درد نمیخورد و احتمالا نیازی به آن نباشد. یا مولد رو به تعداد دلخواه مثلا به تعداد 10 بار به کار میندازیم و 10 تا تولیدیش رو جمع میکنیم. اگه بیت آخر حاصل جمع این ده تا عدد یک بود یک و اگه صفر بود صفر برگردونیم.
این راه حلها بدند و من دنبال بهترش میگردم.
اگه چیزی به ذهنتون میرسه لطفا بگید و اگه تونستید تحلیل زمانی هم بکنید.
با تشکر

atilla snowman
جمعه 08 شهریور 1387, 11:39 صبح
راه حل جدید تری که به ذهنم رسیده استفاده از عملگر Xor هستش که روی کل اعداد تولید شده از قبل و عدد تولید شده جدید انجام میگیره و نتیجه برگردونده میشه. و البته عدد تولید شده ی جدید یا عدد حاصل Xor رو نگه میداریم. یا حد اقل تا چند مرحله بعدش نگه میداریم.
خواهش میکنم دوستان ایده بدن.

atilla snowman
دوشنبه 11 شهریور 1387, 12:26 عصر
بالاخره به جواب رسیدم.
از این که منو تو رسیدن به جواب کمک کردید ممنونم!!!
من جوابو مینویسم تا شاید به درده یکی خورد.
ما با داشتن یک مولد عدد 0 و یا 1 که با احتمال نا معلومه p عدد 1 تولید میکنه میتونیم یک مولد عدد بسازیم که با احتمال p صفر تولید کنه و این کار با برعکس کردن خروجی انجام میشه. من مولد اصلیه رو G و مولد جدیده رو g مینامم. حالا هر با که میخوایم با احتمال مساوی عدد یک یا صفر تولید کنیم هر دو مولد رو یک بار به کار میندازیم و جروجی رو Xor میکینم. احتمال این که دو خروجی یکسان باشند با احتمال اینکه متفاوت باشند یکیه. میتونید با یه حساب ساده به درستیه حرفم پی ببرید. مولد مرکبی که ساختیم از لحاظ نمایی بربر مولد پایه هستش ولی با ضریبی کمی بزرگتر از دو برابر اون.