یک مولد اعداد تصادفی چیست؟ مولد اعداد تصادفی مفهوم مولد عدد

آیا تا به حال این جمله را بررسی کرده اید که از هر 10 چرخش رولت، یک عدد زوج 5 بار می آید؟ یا شاید چندین بار در قرعه کشی شرکت کرده اید و حتی موفق شده اید برنده شوید؟ اگر بپذیریم که همه نتایج واقعاً تصادفی هستند، آنگاه می‌توانیم در مورد احتمال وقوع یک رویداد خاص صحبت کنیم.

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

بنابراین چگونه می توانید بررسی کنید که آیا اصل توزیع تصادفی است؟ یک مولد اعداد تصادفی این کار را انجام خواهد داد. مزیت اصلی آن این است که به صورت آنلاین کار می کند، به این معنی که بسیار سریع است و به وجود اتصال اینترنت پس از دانلود بستگی ندارد.

یک مولد اعداد تصادفی چگونه کار می کند؟

برای توصیف کار، به حروف زیادی نیاز ندارید، همه چیز بسیار ساده است: باید حداقل و حداکثر اعداد ممکن را انتخاب کنید، تعداد مقادیر تولید شده را وارد کنید، در صورت لزوم، کادر "Exclude Repetitions" را علامت بزنید، که مانع از اعدادی را که قبلاً وجود داشته اند ظاهر کنید و روی دکمه تولید کلیک کنید. پس از این، هر کلیک بعدی دکمه گزینه های توزیع جدیدی را ایجاد می کند.

چرا ممکن است این مورد نیاز باشد؟ مثلا برای گرفتن اعداد خوش شانسدر قرعه کشی یا رولت علاوه بر این، ژنراتور اعداد شبه تصادفیقادر به تقلید از بشکه های لوتو یا پرتاب سکه برای یک مسابقه - سر و دم با صفر یا یک نشان داده می شود. اما نکته اصلی این است که پس از بارگیری صفحه، نیازی به اتصال به اینترنت ندارید - کد در جاوا اسکریپت نوشته شده و در سمت کاربر، در مرورگر او اجرا می شود.

تست عملکرد این ژنراتور آنلاینگاهی اوقات کاملا نتایج جالب: با استفاده از اعداد 0 و 1 با 10 گزینه، به ندرت توزیعی در نسبت 7 به 3 یا حتی 6 تولید می شود. اعداد یکسانقرارداد.

برای چه چیز دیگری، به جز لوتو و مثال های بالا، تصادفی می تواند برای توزیع اعداد مفید باشد؟ حداقل برای بازی حدس زدن. احتمالاً این بازی را در کودکی انجام داده اید: میزبان عددی را از 1 تا 100 حدس می زند و بقیه سعی می کنند آن را حدس بزنند. در رابطه با این ژنراتور، شما به عنوان رهبر عمل می کنید و کامپیوتر سعی می کند آنچه پنهان است را حدس بزند.

شما حتی می توانید بازی کنید نبرد دریایی، بلافاصله گروهی از اعداد را در محدوده 0 تا 99 دریافت می کند. در این حالت، مهم ترین رقم عدد به عنوان حروف (که به صورت افقی نشان داده می شوند) استفاده می شود - 0 ... 9 یک ... است و، ارقام کم رقم در این مورد جایگزین محدوده 1 ... 10 می شوند، سپس فقط یک عدد اضافه می شود. شاید در حال حاضر این رویکرد چندان واضح به نظر نمی رسد، اما این یک امر عادت است.

راه جالب دیگر برای استفاده از آن، آزمایش شهود خود است. شما سعی می کنید پیش بینی کنید که کدام اعداد (یک به یک یا در یک گروه) ژنراتور را تولید می کند، یک دکمه را فشار دهید و بررسی کنید که چقدر به نتیجه صحیح نزدیک بوده اید. چه کسی می داند، شاید پس از چندین بار تلاش بتوانید نتیجه را به درستی پیش بینی کنید؟

اما باید در نظر گرفت که مولد اعداد تصادفی به دلیلی به این نام خوانده می شود. روش‌های موجود امروزه قادر به ارائه یک مقدار واقعا تصادفی نیستند - این به عوامل زیادی بستگی دارد که ممکن است شامل تعداد قبلی، زمان فعلی، محتوای یک سلول حافظه خاص و سایر داده‌ها باشد. اما برای نیازهای داخلی، عملکرد آنها معمولاً 100٪ کافی است.

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


توجه داشته باشید که در حالت ایده آل منحنی چگالی توزیع اعداد تصادفی همانطور که در شکل نشان داده شده است به نظر می رسد. 22.3. یعنی در حالت ایده آل هر بازه شامل همان شمارهنکته ها: ن من = ن/ک ، جایی که نتعداد کل امتیازات، کتعداد فواصل، من= 1، ک .

برنج. 22.3. نمودار فراوانی اعداد تصادفی،
از نظر تئوری توسط یک مولد ایده آل تولید می شود

لازم به یادآوری است که تولید یک عدد تصادفی دلخواه شامل دو مرحله است:

  • ایجاد یک عدد تصادفی نرمال شده (یعنی توزیع یکنواخت از 0 تا 1)؛
  • تبدیل اعداد تصادفی نرمال شده r منبه اعداد تصادفی ایکس من، که طبق قانون توزیع (خودسرانه) مورد نیاز کاربر یا در بازه زمانی مورد نیاز توزیع می شوند.

مولدهای اعداد تصادفی با توجه به روش به دست آوردن اعداد به موارد زیر تقسیم می شوند:

  • فیزیکی؛
  • جدولی
  • الگوریتمی

RNG فیزیکی

یک مثال از یک RNG فیزیکی می تواند این باشد: یک سکه ("سر" 1، "دم" 0). تاس; یک درام با یک فلش به بخش هایی با اعداد تقسیم شده است. مولد نویز سخت افزاری (HS)، که از یک دستگاه حرارتی پر سر و صدا، به عنوان مثال، یک ترانزیستور استفاده می کند (شکل 22.422.5).

برنج. 22.4. طرح یک روش سخت افزاری برای تولید اعداد تصادفی
برنج. 22.5. نمودار بدست آوردن اعداد تصادفی به روش سخت افزاری
وظیفه "تولید اعداد تصادفی با استفاده از سکه"

با استفاده از یک سکه یک عدد سه رقمی تصادفی ایجاد کنید که به طور یکنواخت در محدوده 0 تا 1 توزیع شده است. دقت سه رقم اعشار

اولین راه حل مشکل
یک سکه را 9 بار پرتاب کنید، و اگر سکه روی سرش افتاد، "0" را بنویسید، اگر روی سر افتاد، "1" را بنویسید. بنابراین، فرض کنید که در نتیجه آزمایش، دنباله تصادفی 100110100 را دریافت کردیم.

فاصله ای از 0 تا 1 رسم کنید. با خواندن اعداد به ترتیب از چپ به راست، فاصله را به نصف تقسیم کنید و هر بار یکی از قسمت های بازه بعدی را انتخاب کنید (اگر 0 دریافت کردید، سپس قسمت چپ را اگر به دست آوردید. a 1، سپس مورد راست). بنابراین، شما می توانید به هر نقطه ای در بازه زمانی، با دقتی که دوست دارید برسید.

بنابراین، 1 : فاصله به نصف تقسیم می شود و نیمه سمت راست انتخاب می شود، فاصله باریک می شود: . شماره بعدی 0 : فاصله به نصف تقسیم می شود و نیمه چپ انتخاب می شود، فاصله باریک می شود: . شماره بعدی 0 : فاصله به نصف تقسیم می شود و نیمه چپ انتخاب می شود، فاصله باریک می شود: . شماره بعدی 1 : فاصله به نصف تقسیم می شود و نیمه سمت راست انتخاب می شود، فاصله باریک می شود: .

با توجه به شرایط دقت مسئله، یک راه حل پیدا شده است: هر عددی از بازه است، به عنوان مثال، 0.625.

در اصل، اگر رویکرد سختگیرانه ای داشته باشیم، تقسیم فواصل باید تا زمانی ادامه یابد که مرزهای چپ و راست بازه پیدا شده با دقت رقم سوم اعشار منطبق شوند. یعنی از نظر دقت عدد تولید شده دیگر از فاصله زمانی که در آن قرار دارد از هیچ عددی قابل تشخیص نخواهد بود.

راه دوم برای حل مشکل
بیایید دنباله باینری حاصل 100110100 را به سه گانه تقسیم کنیم: 100، 110، 100. پس از ترجمه این موارد اعداد باینریدر اعشار به دست می آوریم: 4، 6، 4. با جایگزینی "0" در جلو، به: 0.464 می رسیم. این روش فقط می تواند اعدادی از 0.000 تا 0.777 را تولید کند (زیرا حداکثری که می توان از سه رقم باینری "فشرده" کرد 111 2 = 7 8 است) یعنی در واقع این اعداد در سیستم اعداد اکتالی نشان داده می شوند. برای ترجمه هشتیاعداد در اعشاریبیایید نمایش را انجام دهیم:
0.464 8 = 4 8 1 + 6 8 2 + 4 8 3 = 0.6015625 10 = 0.602 10.
بنابراین، تعداد مورد نیاز: 0.602 است.

RNG جدولی

RNG های جدولی از جداول کامپایل شده ویژه حاوی اعداد غیرهمبسته تایید شده، یعنی به هیچ وجه وابسته به یکدیگر، به عنوان منبع اعداد تصادفی استفاده می کنند. روی میز شکل 22.1 قطعه کوچکی از چنین جدولی را نشان می دهد. با پیمایش جدول از چپ به راست از بالا به پایین، می توانید اعداد تصادفی را که به طور مساوی از 0 تا 1 توزیع شده اند با تعداد ارقام اعشاری مورد نیاز بدست آورید (در مثال ما برای هر عدد از سه رقم اعشار استفاده می کنیم). از آنجایی که اعداد در جدول به یکدیگر وابسته نیستند، جدول را می توان طی کرد راه های مختلفبرای مثال، از بالا به پایین، یا از راست به چپ، یا مثلاً می‌توانید اعدادی را انتخاب کنید که در موقعیت‌های زوج هستند.

جدول 22.1.
اعداد تصادفی به طور مساوی
اعداد تصادفی از 0 تا 1 توزیع شده است
اعداد تصادفی به طور منظم توزیع شده
0 تا 1 اعداد تصادفی
9 2 9 2 0 4 2 6 0.929
9 5 7 3 4 9 0 3 0.204
5 9 1 6 6 5 7 6 0.269
… …

کرامت این روشاین است که اعداد واقعا تصادفی تولید می کند زیرا جدول حاوی اعداد غیر همبسته تأیید شده است. معایب روش: برای ذخیره سازی مقدار زیاداعداد به حافظه زیادی نیاز دارند. در تولید و بررسی این نوع جداول مشکلات زیادی وجود دارد؛ تکرارها هنگام استفاده از جدول دیگر تصادفی بودن دنباله عددی و در نتیجه قابل اعتماد بودن نتیجه را تضمین نمی کند.

جدولی حاوی 500 عدد تأیید شده کاملاً تصادفی وجود دارد (برگرفته از کتاب I. G. Venetsky, V. I. Venetskaya "مفاهیم و فرمول های اساسی ریاضی و آماری در تجزیه و تحلیل اقتصادی").

RNG الگوریتمی

اعداد تولید شده توسط این RNG ها همیشه شبه تصادفی (یا شبه تصادفی) هستند، یعنی هر عدد بعدی تولید شده به عدد قبلی بستگی دارد:

r من + 1 = f(r من) .

دنباله هایی که از چنین اعدادی تشکیل شده اند حلقه ها را تشکیل می دهند، یعنی لزوماً چرخه ای وجود دارد که تکرار می شود. عدد بی نهایتیک بار. به چرخه های تکراری دوره می گویند.

مزیت این RNG ها سرعت آنهاست. ژنراتورها عملاً به منابع حافظه نیاز ندارند و فشرده هستند. معایب: اعداد را نمی توان به طور کامل تصادفی نامید، زیرا بین آنها وابستگی وجود دارد و همچنین وجود نقطه در دنباله اعداد شبه تصادفی وجود دارد.

بیایید چندین روش الگوریتمی برای به دست آوردن RNG در نظر بگیریم:

  • روش مربع های میانه؛
  • روش محصولات میانی؛
  • روش هم زدن؛
  • خطی روش همگام.

روش مربع میانی

یک عدد چهار رقمی وجود دارد آر 0 . این عدد مربع شده و وارد می شود آر 1 . بعدی از آر 1 عدد تصادفی جدید وسط (چهار رقم وسط) را می گیرد و در آن می نویسد آر 0 . سپس این روش تکرار می شود (شکل 22.6 را ببینید). توجه داشته باشید که در واقع، به عنوان یک عدد تصادفی باید آن را نگیرید قیج، آ 0.ghijبا یک صفر و یک اعشار به سمت چپ اضافه شده است. این واقعیت همانطور که در شکل 1 منعکس شده است. 22.6 و در شکل های مشابه بعدی.

برنج. 22.6. طرح روش مربعات میانگین

معایب روش: 1) اگر در برخی از تکرار تعداد آر 0 برابر با صفر می شود، سپس ژنراتور منحط می شود، بنابراین انتخاب صحیح مقدار اولیه مهم است. آر 0 ; 2) ژنراتور دنباله را از طریق تکرار تکرار می کند م nمراحل (در بهترین سناریو)، جایی که nرقم عددی آر 0 , مپایه سیستم اعداد

به عنوان مثال در شکل. 22.6: اگر تعداد آر 0 در سیستم اعداد باینری نشان داده می شود، سپس دنباله اعداد شبه تصادفی در 2 4 = 16 مرحله تکرار می شود. توجه داشته باشید که اگر شماره شروع ضعیف انتخاب شود، تکرار دنباله می تواند زودتر اتفاق بیفتد.

روشی که در بالا توضیح داده شد توسط جان فون نویمان پیشنهاد شد و به سال 1946 باز می گردد. از آنجایی که این روش غیرقابل اعتماد بود، به سرعت کنار گذاشته شد.

روش محصول میانی

عدد آر 0 ضرب در آر 1، از نتیجه به دست آمده آر 2 وسط استخراج شده است آر 2 * (این یک عدد تصادفی دیگر است) و ضرب در آر 1 . تمام اعداد تصادفی بعدی با استفاده از این طرح محاسبه می شوند (شکل 22.7 را ببینید).

برنج. 22.7. طرح روش محصولات متوسط

روش هم زدن

روش shuffle از عملیات برای جابجایی چرخه ای محتویات یک سلول به چپ و راست استفاده می کند. ایده روش به شرح زیر است. اجازه دهید سلول شماره اولیه را ذخیره کند آر 0 . با انتقال چرخه ای محتویات سلول به چپ به اندازه 1/4 طول سلول، عدد جدیدی به دست می آید. آر 0 * . به همین ترتیب، چرخه محتویات سلول آر 0 به سمت راست در 1/4 طول سلول، عدد دوم را بدست می آوریم آر 0**. مجموع اعداد آر 0* و آر 0** یک عدد تصادفی جدید می دهد آر 1 . به علاوه آر 1 وارد شده است آر 0، و کل دنباله عملیات تکرار می شود (شکل 22.8 را ببینید).


برنج. 22.8. نمودار روش اختلاط

لطفاً توجه داشته باشید که عدد حاصل از جمع بندی آر 0* و آر 0 **، ممکن است به طور کامل در سلول قرار نگیرد آر 1 . در این حالت، ارقام اضافی باید از عدد حاصل حذف شوند. اجازه دهید این را در شکل توضیح دهیم. 22.8، که در آن تمام سلول ها با هشت رقم باینری نمایش داده می شوند. اجازه دهید آر 0 * = 10010001 2 = 145 10 , آر 0 ** = 10100001 2 = 161 10 ، سپس آر 0 * + آر 0 ** = 100110010 2 = 306 10 . همانطور که می بینید، عدد 306 9 رقم (در سیستم اعداد باینری) را اشغال می کند و سلول آر 1 (همانند آر 0) می تواند حداکثر 8 بیت داشته باشد. بنابراین، قبل از وارد کردن مقدار به آر 1، لازم است یک بیت "اضافی"، سمت چپ، از عدد 306 حذف شود، در نتیجه آر 1 دیگر به 306 نمی رود، بلکه به 00110010 2 = 50 10 می رود. همچنین توجه داشته باشید که در زبان‌هایی مانند پاسکال، «بریدن» بیت‌های اضافی هنگام سرریز شدن سلول به طور خودکار مطابق با نوع مشخص شده متغیر انجام می‌شود.

روش همگرای خطی

روش همگرای خطی یکی از ساده ترین و رایج ترین روش هایی است که در حال حاضر اعداد تصادفی را شبیه سازی می کند. این روش از mod( ایکس, y) که با تقسیم آرگومان اول بر آرگومان دوم، باقیمانده را برمی گرداند. هر عدد تصادفی بعدی بر اساس عدد تصادفی قبلی با استفاده از فرمول زیر محاسبه می شود:

r من+ 1 = mod( ک · r من + ب, م) .

دنباله اعداد تصادفی به دست آمده با استفاده از این فرمول نامیده می شود دنباله همگام خطی. بسیاری از نویسندگان یک دنباله همگام خطی را وقتی می نامند ب = 0 روش ضربی همگام، و وقتی که ب ≠ 0 — روش همگام مختلط.

برای یک ژنراتور با کیفیت بالا، انتخاب ضرایب مناسب ضروری است. لازم است که شماره مبسیار بزرگ بود، زیرا دوره نمی تواند بیشتر باشد معناصر. از سوی دیگر، تقسیم مورد استفاده در این روش یک عملیات نسبتا کند است، بنابراین برای یک کامپیوتر باینری انتخاب منطقی خواهد بود. م = 2 ن، زیرا در این حالت، یافتن باقیمانده تقسیم در داخل کامپیوتر به عملیات منطقی باینری "AND" کاهش می یابد. انتخاب بزرگترین عدد اول نیز رایج است م، کمتر از 2 ن: در ادبیات تخصصی ثابت شده است که در این مورد ارقام مرتبه پایین اعداد تصادفی حاصل r من+ 1 به اندازه ی بزرگترها به صورت تصادفی رفتار می کنند، که تأثیر مثبتی روی کل دنباله اعداد تصادفی به عنوان یک کل دارد. به عنوان مثال، یکی از اعداد مرسن، برابر با 2 31 1، و بنابراین، م= 2 31 1 .

یکی از الزامات دنباله‌های متجانس خطی این است که طول دوره تا حد امکان طولانی باشد. طول دوره بستگی به مقادیر دارد م , کو ب. قضیه ای که در زیر ارائه می کنیم به ما امکان می دهد تعیین کنیم که آیا امکان دستیابی به دوره وجود دارد یا خیر حداکثر طولبرای مقادیر خاص م , کو ب .

قضیه. دنباله همگام خطی که با اعداد تعریف می شود م , ک , بو r 0، دارای یک دوره طولانی است ماگر و تنها اگر:

  • شماره بو منسبتا ساده؛
  • ک 1 بار پبرای هر اول پ، که مقسوم علیه است م ;
  • ک 1 مضرب 4 است، اگر ممضرب 4

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

مشخص شد که یک سری از اعداد شبه تصادفی تولید شده بر اساس داده های مثال 1 هر بار تکرار می شود. م/4 عدد. عدد qقبل از شروع محاسبات به طور دلخواه تنظیم می شود، با این حال، باید در نظر داشت که این مجموعه تصور تصادفی بودن را در کل ایجاد می کند. ک(و بنابراین q). نتیجه را می توان تا حدودی بهبود بخشید اگر بعجیب و غریب و ک= 1 + 4 · q در این صورت ردیف هر بار تکرار خواهد شد مشماره. پس از یک جستجوی طولانی کمحققان بر روی مقادیر 69069 و 71365 مستقر شدند.

یک مولد اعداد تصادفی با استفاده از داده های مثال 2 اعداد تصادفی و غیر تکراری را با دوره 7 میلیون تولید می کند.

روش ضربی برای تولید اعداد شبه تصادفی توسط D.H. Lehmer در سال 1949 پیشنهاد شد.

بررسی کیفیت ژنراتور

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

بررسی های انجام شده بر دو نوع است:

  • بررسی یکنواختی توزیع؛
  • آزمون های استقلال آماری

بررسی یکنواختی توزیع

1) RNG باید نزدیک به مقادیر زیر از پارامترهای آماری مشخصه یک قانون تصادفی یکنواخت تولید کند:

2) تست فرکانس

تست فرکانس به شما امکان می دهد تا دریابید که چند عدد در یک بازه قرار می گیرند (متر r – σ r ; متر r + σ r) ، یعنی (0.5 0.2887؛ 0.5 + 0.2887) یا در نهایت (0.2113; 0.7887). از آنجایی که 0.7887 0.2113 = 0.5774، نتیجه می گیریم که در یک RNG خوب، حدود 57.7٪ از تمام اعداد تصادفی ترسیم شده باید در این بازه قرار گیرند (شکل 22.9 را ببینید).

برنج. 22.9. نمودار فرکانس یک RNG ایده آل
در صورت بررسی آن برای تست فرکانس

همچنین باید در نظر گرفت که تعداد اعدادی که در بازه (0؛ 0.5) قرار می گیرند باید تقریباً برابر با تعداد اعدادی باشد که در بازه (0.5؛ 1) قرار می گیرند.

3) آزمون کای دو

آزمون کای دو (آزمون χ 2) یکی از شناخته شده ترین آزمون های آماری است. این روش اصلی مورد استفاده در ترکیب با معیارهای دیگر است. آزمون کای دو در سال 1900 توسط کارل پیرسون پیشنهاد شد. کار قابل توجه او به عنوان پایه و اساس آمار ریاضی مدرن در نظر گرفته می شود.

برای مورد ما، آزمایش با استفاده از معیار خی دو به ما این امکان را می دهد که بفهمیم چقدر است واقعی RNG نزدیک به معیار RNG است، یعنی اینکه آیا نیاز توزیع یکنواخت را برآورده می کند یا خیر.

نمودار فرکانس ارجاع RNG در شکل نشان داده شده است. 22.10. از آنجایی که قانون توزیع RNG مرجع یکنواخت است، پس احتمال (نظری) وجود دارد پ منگرفتن اعداد به منامین بازه (همه این فواصل ک) برابر است با پ من = 1/ک . و به این ترتیب، در هر یک از کفواصل خواهد رسید صافتوسط پ من · ن شماره ( نتعداد کل اعداد تولید شده).

برنج. 22.10. نمودار فرکانس RNG مرجع

یک RNG واقعی اعداد توزیع شده (و نه لزوماً به طور مساوی!) را تولید می کند کفواصل و هر بازه شامل n مناعداد (در مجموع n 1 + n 2 + + n ک = ن ). چگونه می توانیم تشخیص دهیم که RNG مورد آزمایش چقدر خوب است و چقدر به مرجع نزدیک است؟ کاملاً منطقی است که اختلافات مجذور بین تعداد اعداد حاصل را در نظر بگیریم n منو "مرجع" پ من · ن . بیایید آنها را جمع کنیم و نتیجه این است:

χ 2 exp. = ( n 1 پ 1 · ن) 2 + (n 2 پ 2 · ن) 2 + + ( n ک – پ ک · ن) 2 .

از این فرمول نتیجه می شود که هر چه تفاوت در هر یک از اصطلاحات کمتر باشد (و بنابراین ارزش کمترχ 2 exp. ، هر چه قانون توزیع اعداد تصادفی تولید شده توسط یک RNG واقعی قوی تر باشد، تمایل به یکنواختی دارد.

در عبارت قبلی، به هر یک از اصطلاحات یک وزن (برابر 1) اختصاص داده شده است که در واقع ممکن است درست نباشد; بنابراین، برای آمار کای اسکوئر، نرمال کردن هر یک ضروری است منترم، تقسیم آن بر پ من · ن :

در نهایت، بیایید عبارت حاصل را فشرده تر بنویسیم و آن را ساده کنیم:

ما مقدار آزمون مجذور کای را به دست آوردیم تجربیداده ها.

روی میز 22.2 داده شده است نظریمقادیر مجذور کای (χ 2 نظری)، که در آن ν = ن 1 تعداد درجات آزادی است، پاین یک سطح اطمینان مشخص شده توسط کاربر است که نشان می دهد RNG چقدر باید الزامات یک توزیع یکنواخت را برآورده کند، یا پ — احتمال این است که مقدار تجربی χ 2 exp. کمتر از جدول بندی شده (نظری) χ 2 نظری خواهد بود. یا برابر با آن.

جدول 22.2.
چند درصد از توزیع χ2
p = 1٪ p = 5٪ p = 25٪ p = 50٪ p = 75٪ p = 95٪ p = 99٪
ν = 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
ν = 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
ν = 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
ν = 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
ν = 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
ν = 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
ν = 7 1.239 2.167 4.255 6.346 9.037 14.07 18.48
ν = 8 1.646 2.733 5.071 7.344 10.22 15.51 20.09
ν = 9 2.088 3.325 5.899 8.343 11.39 16.92 21.67
ν = 10 2.558 3.940 6.737 9.342 12.55 18.31 23.21
ν = 11 3.053 4.575 7.584 10.34 13.70 19.68 24.72
ν = 12 3.571 5.226 8.438 11.34 14.85 21.03 26.22
ν = 15 5.229 7.261 11.04 14.34 18.25 25.00 30.58
ν = 20 8.260 10.85 15.45 19.34 23.83 31.41 37.57
ν = 30 14.95 18.49 24.48 29.34 34.80 43.77 50.89
ν = 50 29.71 34.76 42.94 49.33 56.33 67.50 76.15
ν > 30 ν + sqrt(2 ν ) · ایکس پ+ 2/3 · ایکس 2 پ 2/3 + O(1/sqrt( ν ))
ایکس پ = 2.33 1.64 0.674 0.00 0.674 1.64 2.33

قابل قبول تلقی می شود پ از 10% تا 90%.

اگر χ 2 گسترش یابد. بسیار بیشتر از نظریه χ 2. (به این معنا که پبزرگ است)، سپس ژنراتور راضی نمی کندنیاز به توزیع یکنواخت، از مقادیر مشاهده شده n مناز نظری خیلی دور شوید پ من · ن و نمی توان آن را تصادفی در نظر گرفت. به عبارت دیگر اینقدر بزرگ نصب شده است فاصله اطمینان، که محدودیت های اعداد بسیار شل می شوند، الزامات اعداد ضعیف می شوند. در این صورت یک خطای مطلق بسیار بزرگ مشاهده خواهد شد.

حتی D. Knuth در کتاب خود "هنر برنامه نویسی" اشاره کرد که داشتن χ 2 exp. برای کوچکترها، به طور کلی، این نیز خوب نیست، اگرچه در نگاه اول از نظر یکنواختی فوق العاده به نظر می رسد. در واقع، یک سری از اعداد 0.1، 0.2، 0.3، 0.4، 0.5، 0.6، 0.7، 0.8، 0.9، 0.1، 0.2، 0.3، 0.4، 0.5، 0.6 را در نظر بگیرید، آنها از نظر یکنواختی، χ ایده آل هستند. 2 انقضا عملاً صفر خواهد بود، اما بعید است که آنها را تصادفی تشخیص دهید.

اگر χ 2 گسترش یابد. بسیار کمتر از نظریه χ 2. (به این معنا که پکوچک)، سپس ژنراتور راضی نمی کندنیاز به توزیع یکنواخت تصادفی، از مقادیر مشاهده شده n منخیلی نزدیک به نظری پ من · ن و نمی توان آن را تصادفی در نظر گرفت.

اما اگر χ 2 exp. در محدوده معینی بین دو مقدار تئوری χ 2 قرار دارد. ، که برای مثال مطابقت دارند پ= 25٪ و پ= 50٪، پس می توانیم فرض کنیم که مقادیر اعداد تصادفی تولید شده توسط سنسور کاملا تصادفی هستند.

علاوه بر این، باید در نظر داشت که همه ارزش ها پ من · ن باید به اندازه کافی بزرگ باشد، برای مثال بیش از 5 (به صورت تجربی یافت می شود). تنها در این صورت (با یک نمونه آماری به اندازه کافی بزرگ) می توان شرایط تجربی را رضایت بخش در نظر گرفت.

بنابراین، روش تأیید به شرح زیر است.

آزمون های استقلال آماری

1) بررسی فراوانی وقوع اعداد در دنباله

بیایید به یک مثال نگاه کنیم. عدد تصادفی 0.2463389991 متشکل از ارقام 2463389991 و عدد 0.5467766618 از ارقام 5467766618 تشکیل شده است. با اتصال دنباله ارقام، داریم: 246363189799

واضح است که احتمال نظری پ منضرر - زیان منرقم ام (از 0 تا 9) برابر با 0.1 است.

2) بررسی ظاهر سری اعداد یکسان

اجازه دهید با نشان دادن n Lتعداد سری از ارقام یکسان در یک ردیف از طول L. همه چیز باید بررسی شود Lاز 1 تا متر، جایی که متراین یک عدد مشخص شده توسط کاربر است: حداکثر تعداد ارقام یکسان در یک سری.

در مثال "24633899915467766618" 2 سری به طول 2 (33 و 77) یافت شد، یعنی n 2 = 2 و 2 سری به طول 3 (999 و 666) یعنی n 3 = 2 .

احتمال وقوع یک سری طول Lبرابر است با: پ L= 9 10 L (نظری). یعنی احتمال وقوع یک سری یک کاراکتر برابر است با: پ 1 = 0.9 (تئوری). احتمال ظاهر شدن یک سری از دو شخصیت این است: پ 2 = 0.09 (نظری). احتمال ظاهر شدن یک سری از سه شخصیت به شرح زیر است: پ 3 = 0.009 (نظری).

به عنوان مثال، احتمال وقوع یک سری یک شخصیت طولانی است پ L= 0.9، زیرا فقط یک نماد از 10 می تواند وجود داشته باشد و در کل 9 نماد وجود دارد (صفر به حساب نمی آید). و احتمال اینکه دو نماد یکسان "XX" در یک ردیف ظاهر شوند 0.1 · 0.1 · 9 است، یعنی احتمال 0.1 که نماد "X" در موقعیت اول ظاهر شود در احتمال 0.1 ضرب می شود که همان نماد در موقعیت دوم "X" ظاهر می شود و در تعداد این ترکیبات 9 ضرب می شود.

فراوانی وقوع سری ها با استفاده از فرمول خی دو که قبلاً با استفاده از مقادیر مورد بحث قرار گرفتیم محاسبه می شود. پ L .

توجه: ژنراتور را می توان چندین بار آزمایش کرد، اما آزمایشات کامل نیستند و تضمین نمی کنند که ژنراتور اعداد تصادفی تولید می کند. به عنوان مثال، ژنراتوری که دنباله 12345678912345 را تولید می کند، در طول آزمایشات ایده آل در نظر گرفته می شود، که بدیهی است که کاملاً درست نیست.

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

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

برای کمک به آنها، اکثر سایت های تخصصی قرعه کشی یک ویژگی بسیار راحت "شماره گیری خودکار" را ارائه می دهند. امروز به شما خواهیم گفت که چیست و چگونه کار می کند.

"شماره گیری خودکار"

این تابع یک مولد اعداد تصادفی کلاسیک است که از زمان تأسیس اولین سایت های قرعه کشی و کازینوهای مجازی اختراع شده است. بیش از 70 درصد از خریداران بلیط مجازی قرعه کشی های خارجیاین گزینه کاملا رایگان را انتخاب کنید.

علاوه بر این، می توانید به طور خودکار بیش از یک مورد را انتخاب کنید ترکیب برنده، اما چندین (تا 50). این برای بازیکنانی که تعداد زیادی بلیط بخت آزمایی با نرخ های مختلف خریداری می کنند بسیار راحت است.

آمار برد

اگر هنوز شک دارید که آیا از عملکرد "شماره گیری خودکار" استفاده کنید یا خودتان زحمت پر کردن بلیط ها را دارید، ادامه مطلب را بخوانید. بررسی های قرعه کشی Euromillions از برندگان آن به وضوح بیان می کند که تفاوت در روش های پر کردن بلیط به هیچ وجه بر شانس شرکت کننده تأثیر نمی گذارد. آمار قرعه کشی این را به ما می گوید که بر اساس آن، از تعداد کلبازیکنانی که از این گزینه در سایت های اینترنتی استفاده می کنند، حدود 70 درصد برنده می شوند. برای اینکه بی اساس نباشیم، نمونه هایی از برندگان خوش شانس در سال 2012 را که با استفاده از رایانه شرط بندی کردند، خواهیم آورد.

در مارس 2012، یک زوج آمریکایی برنده یک جکپات عظیم 218 میلیون دلاری در لاتاری نیویورک شدند. آنها توسعه پیدا نکردند استراتژی قرعه کشی(بخش را بخوانید استراتژی های بازی، اما به سادگی از عملکرد "شماره گیری خودکار" استفاده کرد.

برندگان رکورد قرعه کشیملیت آمریکایی لاتاری پاوربالکه 586 میلیون دلار را به طور مساوی تقسیم کردند، بلیط های خود را با استفاده از یک مولد اعداد تصادفی پر کردند.

یک خانم مسن که نمی خواست به ترکیب برنده فکر کند، انتخاب اعداد را به کامپیوتر سپرد و 336 میلیون دلار آمریکا برد.

مزایای یک مولد اعداد تصادفی

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

مزیت دوم این است که تلاش ذهنی بازیکن را برای ایجاد یک ترکیب برنده آسان می کند. اگر طرفدار عدد شناسی نیستید و به جادوی اعداد اعتقاد ندارید، باور کنید بهتر از کامپیوترشما نمی توانید ترکیبی از اعداد را به دست آورید.

سومین واقعیت به نفع "شماره گیری خودکار" شانس کاملاً مساوی برای برنده شدن جکپات و سایر جوایز بزرگ است. بلیط بخت آزماییبا دست خودت پر شده

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

دستگاه اسلات

نوین ماشین های اسلات http://igrat-avtomati-wulcan.com یک الگوریتم نسبتاً پیچیده دارد که ترکیبات برنده را تولید می کند. می توان آن را به بخش هایی تقسیم کرد: سنسورهایی به شکل ژنراتور، شمارنده ای که پرداخت را می پذیرد و برنده می کند، سیستم ذخیره سازی برای جوایز بزرگدر قالب جکپات، الگوریتمی به شکل هسته برای صدور وجوه برنده. این الگوریتم ها به یک ساختار مکانیکی به شکل اسلات یا رولت تبدیل می شوند.

حسگر ترکیبات و اعداد تصادفی (RNG)

اکنون می توانیم عملکرد خود RNG را شرح دهیم. چنین حسگرهایی با هدف غیرقابل پیش بینی ساختن بازی تا حد امکان ساخته شده اند. این طرح به دلیل یک عامل مشابه کار می کند، به عنوان مثال، توپ را در سوراخ های مختلف روی چرخ رولت متوقف می کند. با اسلات ها، سیستم دقیقاً یکسان کار می کند، فقط نمادها را متوقف می کند.

در یک اسلات بازی مدرن، توسعه‌دهنده می‌تواند بیش از یک RNG نصب کند. اگر بازی سه هفت را به عنوان مثال در نظر بگیریم، ممکن است چندین سنسور برای ترکیب های فردی و همچنین وجود داشته باشد گونه های جداگانهسنسور برای متوقف کردن اعداد یک چرخ یا درام دیجیتال.

در بازی هایی مانند پولکا میراکلز، سنسورهایی برای توقف اعداد در بازی نصب می شوند و همچنین سنسورهایی که فاصله زمانی هر بازی را محاسبه می کنند و انتقال به بازی های دیگر را ثبت می کنند. زمین های بازی. استفاده از بیش از یک حسگر برای کاهش تعداد بردهای تصادفی در نظر گرفته شده است. همچنین برای جوایز بزرگ به صورت جک پات معمولا سنسورهای جداگانه تعبیه می شود که به صورت اتفاقی ترکیب برنده ای را تولید می کنند که قابل محاسبه نیست.

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

همچنین عقیده ای وجود دارد که صاحب دستگاه می تواند تنظیمات سنسور را به گونه ای پیکربندی کند که هر شکاف برنده به صورت مشروط هر 300 یا 500 بازی ظاهر شود، با این حال، مالک خود نمی تواند دقیقاً بداند که چه تعداد الگوریتم مشتق شده منجر به نتیجه خواهد شد. یک برد دقیق اما این واقعیت که سنسورها قابل تنظیم هستند یک واقعیت است. برای جلوگیری از تضاد منافع، نه یک سنسور، بلکه چندین سنسور نصب می کنند، در غیر این صورت صاحب قمار همیشه در سیاهی باقی می ماند و در غیر این صورت، سنسور توسط هر فرد ماهری قابل کشف است و صندوق کازینو را پاک می کند. به روشی تقریبا قانونی

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

  • ترجمه

تصور کنید سال 1995 است و شما می خواهید اولین خرید آنلاین خود را انجام دهید. مرورگر نت اسکیپ خود را باز می کنید و در حین قهوه می نوشید صفحه نخستبه آرامی بارگیری می شود. مسیر شما در Amazon.com نهفته است - یک فروشگاه آنلاین جدید که یکی از دوستان به شما گفته است. هنگامی که مرحله تکمیل خرید و وارد کردن اطلاعات شخصی فرا می رسد، آدرس در مرورگر از "http" به "https" تغییر می کند. این سیگنال نشان می دهد که کامپیوتر یک ارتباط رمزگذاری شده با سرور آمازون برقرار کرده است. اکنون می توانید داده ها را به سرور ارسال کنید کارت اعتباریبدون ترس از کلاهبردارانی که می خواهند اطلاعات را رهگیری کنند.

متأسفانه، اولین خرید آنلاین شما از همان ابتدا به خطر افتاد: به زودی متوجه خواهید شد که پروتکل ظاهراً ایمن مورد استفاده مرورگر برای برقراری یک اتصال، در واقع، چندان امن نیست.

مشکل این است که کلیدهای مخفی استفاده شده توسط Netscape به اندازه کافی تصادفی نبودند. آنها فقط 40 بیت طول داشتند، یعنی حدود یک تریلیون ترکیب ممکن. به نظر می رسد تعداد زیادیاما هکرها موفق شدند این کدها را حتی در کامپیوترهای دهه 1990 در حدود 30 ساعت بشکنند. عدد ظاهراً تصادفی که نت اسکیپ برای تولید کلید مخفی استفاده کرد بر اساس فقط بود سه معنی: زمان روز، شماره شناسه فرآیند و شماره شناسه فرآیند مادر همگی قابل پیش بینی هستند. به همین دلیل، مهاجم توانست تعداد گزینه های brute-force را کاهش دهد و کلید مورد نظر را خیلی زودتر از آنچه نت اسکیپ انتظار داشت پیدا کند.

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

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

خوشبختانه، به دست آوردن مقادیر واقعاً غیرقابل پیش بینی با استفاده از جهان پر هرج و مرج که دنیای کاملاً قطعی بیت های رایانه را از هر طرف احاطه کرده است دشوار نیست. اما دقیقاً چگونه این کار را انجام دهیم؟

در حین سالهای اخیریک منبع اعداد تصادفی آنلاین به نام لاورند وجود دارد. در سال 1996 ایجاد شد تا به طور خودکار مقادیر تصادفی را با پردازش عکس های یک لامپ تزئینی - یک لامپ گدازه ای که ظاهر خود را به روش های غیرقابل پیش بینی در هر ثانیه تغییر می دهد ، ایجاد کند. از آن زمان، مقادیر تصادفی از این منبع بیش از یک میلیون بار استفاده شده است.

همچنین مولدهای اعداد تصادفی سخت افزاری پیچیده تری وجود دارند که اثرات کوانتومی، مانند برخورد فوتون ها به آینه را تشخیص می دهند. می توانید با ثبت رویدادهای غیرقابل پیش بینی مانند اعداد تصادفی در یک رایانه معمولی زمان دقیقفشار دادن دکمه های صفحه کلید اما برای به دست آوردن تعداد زیادی از چنین مقادیر تصادفی، باید دکمه های زیادی را فشار دهید.

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

اولین تلاش اینتلساخت بهترین مولد اعداد تصادفی در رایانه های شخصی معمولی به سال 1999 باز می گردد، زمانی که اینتل جزء Firmware Hub را برای چیپست ها معرفی کرد. مولد اعداد تصادفی تراشه (PDF) یک طرح نوسانگر حلقه آنالوگ است که نویز حرارتی مقاومت ها را حس می کند، آن را تقویت می کند و از سیگنال حاصل برای تغییر دوره یک مولد ساعت نسبتا کند استفاده می کند. برای هر «تیک» غیرقابل پیش‌بینی این ژنراتور آهسته، ریزمدار فرکانس نوسان یک ژنراتور سریع دوم را تحمیل می‌کند که مرتباً مقدار آن را بین دو حالت باینری تغییر می‌دهد: 0 و 1. نتیجه یک دنباله غیرقابل پیش‌بینی صفر و یک است.

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

به همین دلیل است که در سال 2008، اینتل تصمیم گرفت تا یک مولد اعداد تصادفی را توسعه دهد که کاملاً بر اساس دیجیتال کار می کند. محققان این شرکت در هیلزبورو (اورگان، ایالات متحده آمریکا)، همراه با مهندسان آزمایشگاه طراحی در بنگلور (هند)، شروع به مطالعه یک مشکل کلیدی کردند - چگونگی به دست آوردن یک جریان تصادفی از بیت ها بدون استفاده از مدارهای آنالوگ.

از قضا، راه حل پیشنهادی آنها قانون اساسی طراحی دیجیتال را نقض می کند که یک مدار همیشه باید در یک موقعیت خاص باشد و یک منطقی 0 یا 1 را برمی گرداند. البته، یک عنصر دیجیتال می تواند مدت زمان کوتاهی را در یک موقعیت نامشخص صرف کند و سوئیچ کند. بین این دو مقدار با این حال، باید بسیار دقیق کار کند و هرگز نباید بین آنها نوسان داشته باشد، در غیر این صورت باعث تاخیر یا حتی خرابی در سیستم می شود. در تولیدکننده بیت تصادفی ما، نوسانات یک ویژگی هستند، نه یک اشکال.

ژنراتور آنالوگ قبلی ما تنها قادر به تولید چند صد کیلوبیت اعداد تصادفی در ثانیه بود، در حالی که مولد جدید آنها را با سرعتی در حدود 3 گیگابیت بر ثانیه تولید می کند. با جمع‌آوری مقادیر تقریباً تصادفی دو اینورتر در بلوک‌های 512 بیتی شروع می‌شود. این بلوک ها متعاقباً به جفت اعداد 256 بیتی تقسیم می شوند. البته اگر 512 بیت اصلی کاملا تصادفی نباشند، این اعداد 256 بیتی نیز کاملا تصادفی نخواهند بود. اما می توان آنها را به صورت ریاضی ترکیب کرد تا یک عدد 256 بیتی تولید کند که نزدیک به ایده آل است.


سه سطح از اعداد: مولد اعداد تصادفی اینتل Bull Mountain از هر گونه تغییر در قابلیت پیش بینی از طریق یک فرآیند سه مرحله ای جلوگیری می کند. اول، مدار دیجیتال جریانی از بیت های تصادفی را تولید می کند. سپس "نرمال ساز" (تهویه کننده) دانه های تصادفی خوبی را بر اساس این جریان تولید می کند. در مرحله سوم، مولد اعداد شبه تصادفی جریانی از ارقام را برای استفاده در نرم افزار تولید می کند.

همه اینها با یک تصویر ساده بهتر نشان داده می شود. برای یک ثانیه فرض کنید که مولد بیت های تصادفی الگوهای 8 بیتی تولید می کند، یعنی اعدادی در محدوده 0 تا 255. همچنین فرض کنید این اعداد 8 بیتی کاملا تصادفی نیستند. حال تصور کنید که برای مثال، یک نقص ظریف در مدار، مقادیر خروجی را به قسمت پایینی محدوده منتقل کند. در نگاه اول، جریان اعداد تصادفی خوب به نظر می رسد، اما اگر میلیون ها مقدار را پردازش کنید، متوجه خواهید شد که اعداد بالای محدوده کمی کمتر از اعداد پایین هستند.

یک راه حل ممکن برای این مشکل ساده است: همیشه یک جفت اعداد 8 بیتی را بگیرید، آنها را ضرب کنید و سپس هشت بیت بالای عدد 16 بیتی را دور بریزید. این روش تقریباً به طور کامل اعوجاج را از بین می برد.

Bull Mountain با اعداد 8 بیتی کار نمی کند: همانطور که قبلاً گفته شد با اعداد 256 بیتی کار می کند. و آنها را ضرب نمی کند، بلکه عملیات رمزنگاری پیچیده تری را انجام می دهد. اما ایده اصلی یکسان است. شما می توانید این مرحله را به عنوان "نرمال سازی" در نظر بگیرید تا هرگونه انحراف از توزیع تصادفی اعداد را که می تواند در مداری با دو اینورتر رخ دهد، حذف کنید.

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

اگر مقادیر تصادفی به اندازه کافی سریع تولید نشوند تا استانداردها را برآورده کنند، تصادفی بودن تضمین شده کافی نیست. اگرچه مدار سخت افزاری به طور قابل توجهی سریعتر از مدل های قبلی خود جریان تولید می کند، اما هنوز برای برخی کافی نیست وظایف مدرن. به طوری که Bull Mountain می تواند اعداد تصادفی را به همان سرعتی که مولدهای اعداد شبه تصادفی نرم افزاری یک جریان تولید می کنند، تولید کند، اما در عین حال ذخیره کند. کیفیت بالااعداد تصادفی، یک سطح دیگر به طرح اضافه کردیم. در اینجا، اعداد تصادفی 256 بیتی به عنوان دانه های تصادفی امن رمزنگاری برای تولید تعداد زیادی اعداد شبه تصادفی 128 بیتی استفاده می شوند. از آنجایی که اعداد 256 بیتی با فرکانس 3 گیگاهرتز تحویل داده می شوند، مواد کافی برای تولید سریع کلیدهای رمزنگاری تضمین شده وجود دارد.

دستورالعمل جدید که RdRand نام دارد، به برنامه ای اجازه می دهد که به اعداد تصادفی نیاز داشته باشد تا از سخت افزاری که آنها را تولید می کند درخواست کند. دستورالعمل RdRand که برای پردازنده های 64 بیتی اینتل طراحی شده است، کلید ژنراتور Bull Mountain است. مقادیر تصادفی 16، 32 یا 64 بیتی را استخراج می کند و آنها را در یک ثبات قابل دسترسی برنامه قرار می دهد. دستورالعمل RdRand حدود یک سال پیش در دسترس عموم قرار گرفت و اولین پردازنده اینتل که از آن پشتیبانی می کند Ivy Bridge خواهد بود. چیپست جدید 37 درصد سریعتر از نسل قبلی خود است و اندازه حداقل عناصر آن از 32 به 22 نانومتر کاهش یافته است. افزایش عملکرد کلی به خوبی با نیازهای مولد اعداد تصادفی ما مطابقت دارد.

با اينكه لامپ های گدازه ایباحال به نظر می رسد، آنها در هر فضای داخلی قرار نمی گیرند. ما فکر می کنیم که رویکرد ما برای تولید اعداد تصادفی، برعکس، جهانی ترین کاربرد را پیدا خواهد کرد.

همانطور که قبلا ذکر شد، ثبت زمان دقیق فشار دادن کلیدها در گذشته به عنوان منبع مناسبی از مقادیر شروع تصادفی برای ژنراتورها استفاده شده است. برای همین اهداف، از حرکات ماوس و حتی سرعت جستجوی بخش ها در هارد دیسک استفاده کردیم. اما چنین رویدادهایی همیشه به اندازه کافی بیت های تصادفی به شما نمی دهند و پس از یک زمان مشخص اندازه گیری، این بیت ها قابل پیش بینی می شوند. بدتر هنوز، از آنجایی که ما اکنون در دنیایی از سرورها زندگی می کنیم