مولد اعداد شبه تصادفی

مولّد اعداد شبه تصادفی (انگلیسی: Pseudorandom number generator)، که به مولد قطعی (deterministic) اعداد شبه تصادفی نیز، معروف است، الگوریتمی است که دنباله‌ای از اعداد را که با تقریب خوبی تصادفی هستند، تولید می‌کند.

در واقع دنبالهٔ تولیدشده، واقعاً تصادفی نیست، بلکه به‌طور کامل قابل پیش‌بینی، و از روی حالت اولیهٔ الگوریتم، قابل محاسبه است.

مولدهای اعداد تصادفی، مهم و کاربردی هستند. علت کاربرد گستردهٔ آن‌ها، توانایی تولید دوبارهٔ اعداد تولیدشدهٔ قبلی و سرعت بالای تولید است. برای همین، از این الگوریتم‌ها در شبیه‌سازی‌ها (مثلاً روش مونت‌کارلورمزنگاری، و بازی‌های کامپیوتری بسیار استفاده می‌شود. بیشتر الگوریتم‌های رمزنگاری نیاز دارند که خروجی‌شان غیرقابل پیش‌بینی باشد و این امر جز با استفاده از اعداد شبه تصادفی، میسر نمی‌شود.

در حالت کلی، بررسی‌های دقیق ریاضی لازم است تا تضمین شود که الگوریتمی، اعدادی تولید می‌کند که تا حد معقولی تصادفی هستند. جان فُون نُویمان به سوءبرداشت از الگوریتم‌های تولیدکنندهٔ اعداد تصادفی، اشاره کرده‌است و هشدار داده که همواره باید به تفاوت آن‌ها توجه کرد.

مشکلات بالقوه با مولدهای قطعی

تجربه نشان می‌دهد خروجی‌های تولیدشده، به علت خطاهای موجود، راضی‌کننده نیستند و تعداد کمی از تست‌های آماری را به خوبی می‌گذرانند. می‌توان به تعدادی از این نقص‌ها، اشاره کرد؛

  • برای بعضی از حالات اولیه، دوره تناوب کمتر از حد انتظار است.
  • در دنباله‌های بزرگ تولیدشده، توزیع یکنواخت حاصل نمی‌شود.
  • خودهمبستگی اعداد تولیدشده کاملاً محسوس است.
  • فاصلهٔ بعضی مقدارهای خاص، در دنبالهٔ تولید شده، با حالت مشابه تصادفی خود، بسیار اختلاف دارد.

مولدهای اعداد شبه تصادفی نقص‌های زیادی داشتند از نقص‌هایی که زیاد قابل توجه نبود گرفته تا نقص‌های بسیار آشکار. برای مثال RANDU که یک الگوریتم تولید اعداد تصادفی است که دهه‌ها برای رایانه هایmainframe استفاده می‌شد. این الگوریتم نقص‌های فراوانی داشت، با این وجود برای مدت بسیاری طولانی این نقص‌ها کشف نشدند.

در بسیار از زمینه‌ها، تحقیقاتی قبل از قرن بیست و یکم صورت گرفت که در آنها به انتخاب تصادفی یا شبیه‌سازی مونت کارلو متکلی بوده‌اند یا به روش‌های دیگر وابسته به PRNGها بودند. در این موارد اطمینان بسیار کمتر از حالتی است که از PRNG (مولدهای اعداد شبه تصادفی)های بی کیفیت استفاده شود. حتی امروزه، برای احتیاط لازم است، هشداری که در زیر نشان داده شده‌است که در دایرةالمعارف بین‌المللی علوم آماری ۲۰۱۰ آمده‌است را نیز جدی گرفت.

مواردی از مولدهایی که باید بلااستفاده شوند و دور ریخته شوند بسیار بیشتر از مولدهایی های خوب است؛ بنابراین به فروشندگان نرام افزار بدون آگاهی اعتماد نکنید. RNG پیش فرض نرم‌افزار مورد علاقهٔ تان را بررسی کنید. همچنین در صورت نیاز برای تعویض آن آماده باشید. این توصیه بارها طی ۴۰ سال اخیر صورت گرفته‌است. امروز به‌طور شگفت‌آوری همان اندازه مرتبط و لازم است.

برای درک بهتر، زبان‌های برنامه‌نویسی را که به‌طور گسترده استفاده می‌شود را درنظر بگیرید. از سال ۲۰۱۷، جاوا هنوز برای تولید اعداد تصادفی، به یک مولد خطی سازگار (LCG)که کیفیت پایینی دارد، متکی است.

یکی از مولدهای اعداد شبه تصادفی شناخته شده برای جلوگیری از بروز مشکلات بنیادی و همچین داشتن قابلیت اجرای نسبتاً سریع، مرسن توئیستر (در ادامه مورد بحث است) بود که در سال ۱۹۹۸ منتشر شد. سایر مولدهای تولید اعداد شبه تصادفی که کیفیت بالاتری در جهات محاسبات و کارایی آماری داشتند، قبل و بعد از این تاریخ توسعه یافتند. این موارد را لیست مولدهای اعداد شبه تصادفی یافت.

مولد برمبنای بازگشتی‌های خطی

در نیمهٔ دوم قرن بیستم، الگوریتم‌های کلاس استانداری که برای PRNGها استفاده می‌شد، مولدهای سازگار خطی را تشکیل می‌داد. کیفیت LCGها کافی نبود اما روش‌های بهتری نیز وجود نداشت.Press et al در سال ۲۰۰۷ نتایج را اینگونه توصیف می‌کند: «اگر تمامی مقالات عملی ای که به علت LCG‌ها و موارد مرتبط در شک و شبه هستند، ناپدید شوند، در هر قفسهٔ کتابخانه‌ها شکاف‌های بزرگی به‌وجود خواهد آمد.»

هنگامی پیشرفت اصلی در ساخت مولدهای اعداد شبه تصادفی به‌وجود آمد که تکنیک‌های مبتنی بر بازگشت خطی پدیدآمدند. چنین ژنراتورها مربوط به رجیسترهای تغییر فیدبک خطی هستند.

هنگامی پیشرفت اصلی در ساخت مولدهای اعداد شبه تصادفی به‌وجود آمد که تکنیک‌های مبتنی بر بازگشت خطی پدیدآمدند. آنها مولدهایی هستند که دارای ثبات (رجیستر)های تغییر بازخورد خطی اند.

به‌طور ویژه اختراع مرسن چرخان، در سال ۱۹۹۷، از بسیار از مشکلات مولدهای پیشین جلوگیری کرد. مرسن چرخان دوره ای از مولد اعداد شبه تصادفی  تکرار (≈۴٫۳×106001)را دارد که ثابت شده‌است در ۶۲۳ بعد (برای اعدا ۳۲ بیتی) توزیع شده‌است. در آن زمان این شیوه از سایر مولدهای آماری سریع تر بود.

در سال ۲۰۰۳، جورج Marsaglia خانوادهٔ مولدهای xorshift را که مجدداً بر اساس بازگشت خطی بود معرفی کرد. چنین مولدهایی بسیار سریع هستند و به همراه عملیات‌های غیرخطی آزمایش‌های آماری قوی و سختی را پشت سر گذاشتند.

در سال ۲۰۰۶ خانوادهٔ مولدهای WELL توسعه یافتند. مولدهای خانوادهٔ well کیفیت مرسن توئیستر را در برخی جنبه‌ها بهبود دادند. Mersenne Twister دارای فضای حالتی بسیار بزرگ و سرعت بازیابی کمی بود که این بازیابی کند در فضاهای حالتی که تعداد زیادی صفر داشتند رخ می‌داد.

مولدهای شماره شبه تصادفی با رمزنگاری ایمن

PRNG مناسب برای کاربردهای رمزنگاری، یک PRNG با رمزنگاری ایمن (CSPRNG) نامیده می‌شود. یک الزام برای CSPRNG این است که طرفی که seed را نداند، تنها شانس بسیار ناچیزی برای تشخیص و تمایز توالی خروجی مولد از یک دنباله تصادفی دارد. به عبارت دیگر، در حالی که یک PRNG فقط باید آزمون‌های آماری را پشت سر بگذارد، یک CSPRNG باید تمام آزمون‌های آماری محدود شده به زمان چند جمله ای را در اندازه seed را بگذراند. گرچه اثبات این خاصیت فراتر از توانایی فعلی نظریه پیچیدگی محاسباتی است، اما ممکن است با کاهش CSPRNG به مسئله ای که فرض بر آن است که از لحاظ محاسباتی سخت است، مانند فاکتورسازی عدد صحیح، شواهد محکمی بدست آید. به‌طور کلی، ممکن سالها بررسی برای اینکه یک الگوریتم به عنوان CSPRNG تأیید شود، مورد نیاز باشد.

برخی از کلاس‌های CSPRNG شامل موارد زیر است:

  • رمزهای دنباله ای
  • رمزگذارهای قالبی که در مدهای کاری رمزهای قطعه‌ای یا در حالت بازخورد خروجی عمل می‌کنند.
  • PRNGهایی که به‌طور خاص برای ایمن‌سازی رمزنگاری طراحی شده‌اند، مانند تابع رابط برنامه‌نویسی برنامه نویسی کاربرد رمزنگاری مایکروسافت CryptGenRandom، الگوریتم Yarrow (در سیستم عامل Mac X X و FreeBSD) و Fortuna
  • ترکیبی از PRNG که سعی در ترکیب چندین الگوریتم PRNG اولیه برای از بین بردن هرگونه عدم تصادف قابل تشخیص دارند.
  • طرح‌های ویژه مبتنی بر فرضیات سختی ریاضی: نمونه‌ها شامل مولد Micali-Schnorr , عملکرد شبه تصادفی Naor-Reingold و الگوریتم Blum Blum Shub، که یک اثبات امنیتی قوی را ارائه می‌دهند (چنین الگوریتم‌هایی نسبت به سازه‌های سنتی برای بسیاری از کاربردها نسبتاً کند و غیر عملی هستند)
  • PRNGهای عمومی: در حالی که نشان داده شده‌است که یک PRNG ایمن (رمزنگاری شده) می‌تواند به‌طور کلی از هر تابع یک طرفه ساخته شود، این ساختار عمومی در عمل بسیار کند است، بنابراین عمدتاً مورد توجه در موارد تئوری است.

نشان داده شده‌است که به احتمال زیاد آژانس امنیت ملی آمریکا یک درپشتی نامتقارن به NIST قرار داده بود. NIST مولد اعداد شبه تصادفی Dual_EC_DRBG را گواهی می‌کند.

اکثر الگوریتم‌های PRNG توالی‌هایی تولید می‌کنند که به طور یکنواخت توسط آزمون‌های گوناگون توزیع می‌شوند. این یک سؤال بدون پاسخ است، و یک موضوع اصلی برای تئوری و عمل رمزنگاری است که آیا راهی برای تمایز خروجی یک PRNG با کیفیت بالا از یک دنباله واقعاً تصادفی وجود دارد؟ در این تنظیم، تشخیص دهنده می‌داند که یا از الگوریتم شناخته شده PRNG استفاده شده‌است (اما نه وضعیتی که با آن آغاز شد) یا از یک الگوریتم واقعاً تصادفی استفاده شده‌است، و باید بین این دو تفاوت قایل شود. امنیت اکثر الگوریتم‌های رمزنگاری و پروتکل‌های با استفاده از PRNG برفرض آن بناشده اند که تشخیص استفاده از PRNG مناسب از استفاده از یک توالی واقعاً غیرممکن است. ساده‌ترین نمونه‌های این وابستگی، رمزنگاری‌های جریانی هستند، که (اغلب) با یای انحصاری بین متن ساده (رمزنشده) پیام و خروجی PRNG کار می‌کنند و متن رمزشده را تولید می‌کنند. طراحی PRNGهای مناسب از نظر رمزنگاری بسیار دشوار است زیرا آنها باید معیارهای بیشتری را رعایت کنند. اندازه دورهٔ تناوب آنها یک عامل مهم تعیین میزان مناسب بودن رمزنگاری یک PRNG است، اما به تنهایی کافی نیست.

معیارهای ارزیابی BSI

دفتر امنیت اطلاعات فدرال آلمان (Bundesamt für Sicherheit in der Informationstechnik , BSI) چهار معیار برای ارزیابی کیفیت مولدهای اعداد تصادفی قطعی تعیین کرده‌است. این موارد به صورت زیر خلاصه می‌شوند:

  • K1 - احتمال متفاوت بودن اعداد متوالی تولید شده از یکدیگر، زیاد است.
  • K2 -اعداد متوالی تولید شده طبق آزمون‌های مخصوص آماری، از اعداد " واقعا تصادفی " قابل تشخیص نیست. این آزمون‌ها عبارتند از آزمون monobit (تعداد مساوی صفرها و یک‌ها در یک توالی)، آزمون poker (نمونهٔ خاص آزمون chi-square)، آزمون runs (تعداد دفعات اجرا در طول‌های متفاوت را محاسبه می‌کند)، آزمون Longruns (ارزیابی اینکه در ۲۰۰۰۰ بیت متوالی آیا بیشتر یا مساوی 34 run به‌وجود آمده‌است یا خیر)- از BSI و NIST، آزمون autocorrelation (آزمون همبستگی). در اصل این نیازمندی‌ها جهت ارزیابی کیفیت دنبالهٔ بیت‌ها هستند: آیا تعداد صفرها و یک‌ها اکثراً مساوی است؟ بعد از دنباله ای از صفرهای متوالی (یا یک‌های متوالی) بیت یک بعدی (یا صفر بعدی) با احتمال ۰٫۵ ظاهر می‌شود؟ آیا هر زیرمجموعهٔ انتخاب شده از بیت‌ها اطلاعاتی دربارهٔ بیت یا بیت‌های بعدی می‌دهند؟
  • K3 - برای مهاجمان در حالت واقعی و عملی، غیرممکن باشد که از هر زیرمجموعه از بیت‌ها هرگونه اطلاعی از مقادیر قبلی یا بعدی را محاسبه کند یا اینکه حالت فعلی مولد را تعیین کند.
  • K4 - برای هر منظور و هدف عملی غیرممکن باشد که مهاجم بتواند از حالت درونی مولد هرعدد قبلی در دنبالهٔ اعداد تولید شده یا حالت قبلی مولد را محاسبه کند یا حدس بزند.

برای کاربردهای رمزنگاری، فقط مولدهایی که موارد K3 و K4 را رعایت کنند، قابل قبول می‌باشند.

تعریف ریاضی

داده شده (در صورتی که)

  • مولد اعداد شبه تصادفی  - توزیع احتمال مولد اعداد شبه تصادفی  (جایی که مولد اعداد شبه تصادفی  مجموعه استاندارد Borel بر روی خط واقعی است)
  • مولد اعداد شبه تصادفی  - مجموعه ای غیر تهی از مجموعه‌های بورل مولد اعداد شبه تصادفی  ، به عنوان مثال مولد اعداد شبه تصادفی  . اگر مولد اعداد شبه تصادفی  مشخص نشده‌است، ممکن است یا مولد اعداد شبه تصادفی  باشد یا مولد اعداد شبه تصادفی  که بسته به متن تعیین می‌شود.
  • مولد اعداد شبه تصادفی  - یک مجموعه غیر تهی (لزوماً یک مجموعه Borel). غالباً مولد اعداد شبه تصادفی یک مجموعه بین تکیه گاهمولد اعداد شبه تصادفی  و درون (توپولوژی) آن؛ به عنوان مثال، اگر مولد اعداد شبه تصادفی  توزیع یکنواخت در فاصله مولد اعداد شبه تصادفی  باشد، مولد اعداد شبه تصادفی  می‌تواند مولد اعداد شبه تصادفی  باشد. اگر مولد اعداد شبه تصادفی  مشخص نشده باشد، فرض بر این است که مجموعه ای است که همهٔ اعضایش در تکیه گاهمولد اعداد شبه تصادفی  موجود اند و شامل توپولوژی اش می‌باشد.

ما یک تابع مولد اعداد شبه تصادفی  (جایی که مولد اعداد شبه تصادفی  مجموعه اعداد صحیح مثبت است) را یک مولد عدد شبه تصادفی برای مولد اعداد شبه تصادفی  به طوری که مولد اعداد شبه تصادفی  مقادیر مولد اعداد شبه تصادفی  را می‌گیرد مینامیم اگر و تنها اگر

  • مولد اعداد شبه تصادفی 
  • مولد اعداد شبه تصادفی 

(مولد اعداد شبه تصادفی  نشان دهنده تعداد اعضای مجموعه متناهی S است)

می‌توان نشان داد که اگر مولد اعداد شبه تصادفی  مولد عدد شبه تصادفی برای توزیع یکنواخت بر روی بازهٔ مولد اعداد شبه تصادفی  باشد و اگر مولد اعداد شبه تصادفی  تابع توزیع تجمعی برای توزیع توزیع احتمالی داده شده مولد اعداد شبه تصادفی  باشد، سپس مولد اعداد شبه تصادفی  مولد اعداد شبه تصادفی برای مولد اعداد شبه تصادفی  است، به طوری که مولد اعداد شبه تصادفی  صدک مولد اعداد شبه تصادفی  است، یعنی مولد اعداد شبه تصادفی  . به‌طور شهودی، یک توزیع دلخواه می‌تواند توسط یک توزیع استاندارد یکنواخت شبیه‌سازی شود.

رویکردهای اولیه

یکی از روش‌های اولیهٔ مبتنی بر کامپیوتر، به وسیلهٔ فُون نویمان در سال ۱۹۴۶ ارائه شد. این روش به روش «میان-مربع» (Middle-Square) معروف است («میانِ مربع» یا «مربعِ میانی» خوانده نشود)؛ یک عدد دلخواه در نظر گرفته، آن را به توان ۲ برسانید (مربع کنید)، ۴ رقم میانی آن را به عنوان یک عدد تصادفی جدید در نظر بگیرید و آن را به‌عنوان عدد بعدی در الگوریتم استفاده کنید و به این کار ادامه دهید.

مثلاً با شروع از عدد ۱۱۱۱، عدد ۱۲۳۴۳۲۱ حاصل می‌شود، که اگر آن را به صورت هشت رقمی بنویسیم، ۰۱۲۳۴۳۲۱ به دست می‌آید. عدد ۲۳۴۳ به عنوان یک عدد تصادفی به دست می‌آید. با تکرار این عمل روی ۲۳۴۳ به ۴۸۹۶ به عنوان عدد تصادفی بعدی خواهیم رسید. می‌توان همین روند را ادامه داد. اگر در روش اصلی از اعداد ۵ رقمی استفاده می‌شد، روند کاملاً مشابه می‌بود.

در این الگوریتم، پس از تعدادی مرحله به عددی تکراری خواهیم رسید. مشکل اینجاست که به‌ازای بعضی از اعداد ورودی، این اتفاق به سرعت می‌افتد. فون نویمان از این مشکل مطلع بود، اما روش ارائه‌شده برای کاربرد موردنظر، کافی بود.

فون نویمان، تولیدکننده‌های سخت‌افزاری اعداد تصادفی را غیرمناسب می‌دانست. چراکه اگر خروجی‌های تولیدشده ذخیره نمی‌شد، بعداً امکان بازتولید آن‌ها و تست‌کردن خطا وجود نداشت. در حالتی هم که خروجی‌ها را ذخیره می‌کردند، حافظه به هدر می‌رفت. اگر اعداد تولیدشده روی کارت پانچ ذخیره می‌شد، زمان خواندن و نوشتن آن‌ها طولانی می‌شد، درحالی‌که استفاده از روش «میان-مربع» سرعتی صدها برابر بیشتر از سرعت خواندن و نوشتن از کارت پانچ داشت.

از آن زمان، روش مربع میانی توسط مولدهای دقیق تر تعویض شد.

یک نوآوری تازه ترکیب مربع میانه با دنباله Weyl می‌باشد. این روش در مدت زمان طولانی تولید خروجی به کیفیت بالا دست میابد (رجوع کنید به توالی PRNG دنباله میدانی Weyl).

مولدهای غیر یکنواخت

تعداد انتخاب شده از توزیع احتمال غیر یکنواخت را می‌توان با استفاده از یک توزیع PRNG یکنواخت و تابعی که مربوط به این دو توزیع باشد، تولید کرد.

اعداد انتخاب شده از یک توزیع احتمالاتی غیریکنواخت می‌تواند توسط یک توزیع یکنواخت PRNG و یک تابع که دو توزیع را به هم مرتبط کند، تولید شود.

ابتدا به تایع توزیع تجمعی نیاز داریم مولد اعداد شبه تصادفی  توزیع هدف مولد اعداد شبه تصادفی  (تابع F توزیع تجمعی f است):

    مولد اعداد شبه تصادفی 

توجه داشته باشید که مولد اعداد شبه تصادفی  . با استفاده از عدد تصادفی c که از توزیع یکنواخت آمده‌است، به عنوان چگالی احتمال، دریافت می‌کنیم:

    مولد اعداد شبه تصادفی 

در نتیجه

    مولد اعداد شبه تصادفی 

عددی است که به‌طور تصادفی از توزیع مولد اعداد شبه تصادفی  انتخاب شده‌است.

به‌طور مثال، وارونه توزیع گاوسی تجمعی مولد اعداد شبه تصادفی  با یک PRNG یکنواخت ایده‌آل با دامنه (۰، ۱) که ورودی مولد اعداد شبه تصادفی  توالی از مقادیر (فقط مثبت) با توزیع گاوسی را تولید می‌کند. با این حال

  • زمانی که از نمایش عدد عملی استفاده می‌کنیم، "دم"‌های نامتناهی توزیع باید به مقادیر محدود قطع شوند.
  • محاسبه تکراری مولد اعداد شبه تصادفی  باید از طریق الگوریتم زیگورات صورت بگیرد تا تولید اعداد سریع تر شود.

ملاحظات مشابهی برای تولید توزیع‌های غیر یکنواخت دیگر مانند ریلی و پواسون صورت می‌گیرد.

جستارهای وابسته

منابع

کتابشناسی - فهرست کتب

پیوند به بیرون

Tags:

مولد اعداد شبه تصادفی مشکلات بالقوه با مولدهای قطعیمولد اعداد شبه تصادفی مولد برمبنای بازگشتی‌های خطیمولد اعداد شبه تصادفی مولدهای شماره شبه تصادفی با رمزنگاری ایمنمولد اعداد شبه تصادفی معیارهای ارزیابی BSIمولد اعداد شبه تصادفی تعریف ریاضیمولد اعداد شبه تصادفی رویکردهای اولیهمولد اعداد شبه تصادفی مولدهای غیر یکنواختمولد اعداد شبه تصادفی جستارهای وابستهمولد اعداد شبه تصادفی منابعمولد اعداد شبه تصادفی کتابشناسی - فهرست کتبمولد اعداد شبه تصادفی پیوند به بیرونمولد اعداد شبه تصادفیالگوریتمتصادفیزبان انگلیسی

🔥 Trending searches on Wiki فارسی:

روش‌های خودکشیواژنجام جهانی فوتسال ۲۰۲۴نعیمه نظام‌دوستپروین اعتصامیپارسا پیروزفریهودیانروابط جنسی نوجوانان در ایالات متحده آمریکاسوپرجنگ نیابتی ایران و اسرائیلپورن‌هابتوپک مقعدیدی سیکلومینصدام حسینشیعهعنکبوت مقدسترامادولاسبلاکهید مارتین اف-۲۲ رپتوربی‌همه‌چیزگلایران اینترنشنالفهرست بازیگران ایرانیکاظم نوربخشالیزابت دومامارات متحده عربیاحمد وحیدیخسرو حیدریپوست شیرعلی داییپادشاهی ناک‌رانگفرانسهلذت جنسیهولوکاستامیر تتلوهمجنس‌گرایی زنانهسلیمان یکمکرم‌های شب‌تاب باغمقعدلیسیبنسو سورالاسکندر مقدونیامپراتوری سلجوقیتستوسترونویروس پاپیلوم انسانیحمله مغول به ایرانمحسن کیاییصدیقه وسمقیرادیو فردامحمد مصدقتپ‌اختردیوار بزرگ (فیلم)آمیزش جنسی بدون دخولعلی صادقیبرج میلاد۳۶۵ روزمهناز افشاراستریپرپسحگرایش جنسیشکستن آلت مردیباشگاه فوتبال لیورپولمعینجیمی کارترمنی‌پاشیرادیوداروسید احمد خمینیفاطمه طباطباییشاهدخت ناک‌رانگپایتخت (فصل ۵)مادرانهماجراهای شرلوک هلمز (مجموعه تلویزیونی)فهرست اصطلاحات بی‌دی‌اس‌اممرداب (مجموعه نمایش خانگی)فهرست سلسله‌های ایرانناپروکسننماز جمعهشریک جنسیهفت خبیث🡆 More