مولد اعداد باینری تصادفی آنلاین. مولد اعداد تصادفی آنلاین


توجه داشته باشید که در حالت ایده آل منحنی چگالی توزیع اعداد تصادفی همانطور که در شکل نشان داده شده است به نظر می رسد. 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 کمتر باشد)، قانون توزیع اعداد تصادفی تولید شده توسط یک 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) نوشته دونالد ای. کنوت کاملاً به مطالعه اعداد تصادفی اختصاص دارد. روش های مختلف برای تولید اعداد تصادفی، آزمون های آماری تصادفی، و تبدیل اعداد تصادفی توزیع شده یکنواخت به انواع دیگر متغیرهای تصادفی را بررسی می کند. بیش از دویست صفحه به ارائه این مطالب اختصاص یافته است.

  • آموزش

آیا تا به حال فکر کرده اید که Math.random() چگونه کار می کند؟ عدد تصادفی چیست و چگونه به دست می آید؟ یک سوال مصاحبه را تصور کنید - مولد اعداد تصادفی خود را در چند خط کد بنویسید. بنابراین، آن چیست، یک حادثه و آیا می توان آن را پیش بینی کرد؟

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

این مطالب برای همه آن دسته از توسعه دهندگان front-end و Node.js مفید خواهد بود که در لبه های تکنولوژی هستند و می خواهند وارد یک پروژه/استارتاپ بلاک چین شوند، جایی که حتی از توسعه دهندگان فرانت اند در مورد امنیت و رمزنگاری سوالاتی پرسیده می شود. حداقل در سطح پایه

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

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

این منبع برای جمع آوری آنتروپی و سپس به دست آوردن یک مقدار اولیه (seed) از آن استفاده می شود که برای تولید اعداد تصادفی (RNG) برای تولید اعداد تصادفی ضروری است.

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

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

PRNG الگوریتمی دارد که می‌توان آن را بازتولید کرد.
RNG فرآیند به دست آوردن اعداد به طور کامل از نوعی نویز است که توانایی محاسبه آن به سمت صفر است. در عین حال، RNG الگوریتم‌های خاصی برای برابر کردن توزیع دارد.

ما با الگوریتم PRNG خودمان می‌آییم

مولد اعداد شبه تصادفی (PRNG) الگوریتمی است که دنباله ای از اعداد را تولید می کند که عناصر آن تقریباً مستقل از یکدیگر هستند و از توزیع معینی (معمولاً یکنواخت) تبعیت می کنند.
می توانیم دنباله ای از اعداد را بگیریم و مدول عدد را از آنها بگیریم. ساده ترین مثالی که به ذهنم می رسد. ما باید فکر کنیم که کدام دنباله و ماژول را از چه چیزی بگیریم. اگر مستقیماً از 0 به N و مدول 2 بروید، یک مولد 1 و 0 دریافت می کنید:

تابع* rand() (const n = 100؛ const mod = 2؛ اجازه دهید i = 0؛ while (true) (بازده i% mod؛ اگر (i++ > n) i = 0؛ )) بگذارید i = 0؛ برای (بگذارید x از rand()) (اگر (i++ > 100) شکسته شود؛ console.log(x)؛ )
این تابع دنباله 01010101010101 را تولید می کند و حتی نمی توان آن را شبه تصادفی نامید. برای اینکه یک ژنراتور تصادفی باشد، باید تست بیت بعدی را بگذراند. اما ما چنین وظیفه ای نداریم. با این وجود، حتی بدون هیچ آزمایشی نیز می‌توانیم دنباله بعدی را پیش‌بینی کنیم، به این معنی که چنین الگوریتمی مناسب نیست، اما ما در مسیر درستی هستیم.

اگر دنباله ای شناخته شده اما غیر خطی، مثلاً عدد PI را در نظر بگیریم، چه می شود. و به عنوان مقدار ماژول، نه 2، بلکه چیز دیگری را می گیریم. حتی می توانید به تغییر ارزش ماژول فکر کنید. دنباله ارقام در پی تصادفی در نظر گرفته می شود. ژنراتور می تواند با استفاده از اعداد Pi از نقطه ای ناشناخته کار کند. نمونه ای از چنین الگوریتمی با یک دنباله مبتنی بر PI و یک ماژول متغیر:

Const vector = [...Math.PI.toFixed(48).replace(.",""")]; تابع* rand() ( برای (بگذارید i=3؛ i<1000; i++) { if (i >99) i = 2; برای (بگذارید n=0؛ n اما در JS، شماره PI فقط تا 48 رقم قابل نمایش است و نه بیشتر. بنابراین، پیش‌بینی چنین دنباله‌ای همچنان آسان است و هر بار اجرای چنین ژنراتوری همیشه اعداد یکسانی را تولید می‌کند. اما ژنراتور ما قبلاً شروع به نشان دادن اعداد از 0 تا 9 کرده است.

ما یک مولد اعداد از 0 تا 9 دریافت کردیم، اما توزیع بسیار ناهموار است و هر بار همان دنباله را ایجاد می کند.

می‌توانیم نه عدد Pi، بلکه زمان را در نمایش عددی بگیریم و این عدد را دنباله‌ای از اعداد در نظر بگیریم و برای اطمینان از تکرار نشدن دنباله هر بار، آن را از آخر می‌خوانیم. در مجموع، الگوریتم ما برای PRNG ما به صورت زیر خواهد بود:

تابع* rand() ( اجازه دهید newNumVector = () => [...(+تاریخ جدید)+""].reverse(); let vector = newNumVector(); let i=2; while (true) ( اگر (i++ > 99) i = 2؛ بگذارید n=-1؛ در حالی که (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) شکستن؛ console.log(x)
این در حال حاضر مانند یک تولید کننده اعداد شبه تصادفی به نظر می رسد. و همان Math.random() یک PRNG است، کمی بعد در مورد آن صحبت خواهیم کرد. علاوه بر این، هر بار یک عدد اول متفاوت دریافت می کنیم.

در واقع، با استفاده از این مثال های ساده می توانید بفهمید که چگونه مولدهای اعداد تصادفی پیچیده تر کار می کنند.و حتی الگوریتم های آماده وجود دارد. به عنوان مثال، بیایید به یکی از آنها نگاه کنیم———این PRNG همگام خطی (LCPRNG) است.

PRNG همگرا خطی

PRNG همگام خطی (LCPRNG) یک روش رایج برای تولید اعداد شبه تصادفی است. از نظر رمزنگاری قوی نیست. این روش شامل محاسبه شرایط یک مدول دنباله بازگشتی خطی مقداری از عدد طبیعی m است که با فرمول ارائه شده است. دنباله به دست آمده به انتخاب شماره شروع بستگی دارد. دانه با مقادیر مختلف دانه، توالی های مختلفی از اعداد تصادفی به دست می آید. نمونه ای از پیاده سازی چنین الگوریتمی در جاوا اسکریپت:

Const a = 45; const c = 21; const m = 67; دانه var = 2; const rand = () => seed = (a * seed + c) % m; برای (بگذارید i=0؛ i<30; i++) console.log(rand())
بسیاری از زبان های برنامه نویسی از LCPRNG استفاده می کنند (اما نه دقیقاً از این الگوریتم(!)).

همانطور که در بالا ذکر شد، چنین توالی را می توان پیش بینی کرد. پس چرا به PRNG نیاز داریم؟ اگر در مورد امنیت صحبت کنیم، PRNG یک مشکل است. اگر در مورد وظایف دیگر صحبت کنیم، این ویژگی ها می توانند یک مزیت باشند. به عنوان مثال، برای جلوه‌های ویژه و انیمیشن‌های گرافیکی مختلف، ممکن است لازم باشد مکرراً به صورت تصادفی تماس بگیرید. و اینجاست که توزیع معانی و عملکرد مهم است! الگوریتم‌های امن نمی‌توانند به سرعت به خود ببالند.

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

چگونه Math.random() کار می کند

متد Math.random() یک عدد ممیز شناور شبه تصادفی را از محدوده = crypto.getRandomValues(new Uint8Array(1)) برمی گرداند. console.log(rvalue)
اما، برخلاف Math.random() PRNG، این روش بسیار منابع فشرده است. واقعیت این است که این ژنراتور از فراخوانی های سیستم در سیستم عامل برای دسترسی به منابع آنتروپی (آدرس مک، CPU، دما و غیره...) استفاده می کند.

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

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

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

انتخاب

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

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

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

ساده ترین ژنراتورها به سادگی به صورت تصادفی عددی را در یک محدوده معین تعیین می کنند.

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

آنها اساساً هیچ کاربرد دیگری ندارند.

<Рис. 1 Генератор>

نصیحت!هنگام انتخاب مناسب ترین ژنراتور، مهم است که در نظر بگیرید که برای چه چیزی استفاده می شود.

مشخصات فنی

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

جدول 1. ویژگی های عملکرد برنامه های کاربردی آنلاین برای تولید یک عدد تصادفی
نام شبکه اجتماعی نتایج چندگانه از لیست اعداد انتخاب کنید ویجت آنلاین برای سایت از یک محدوده انتخاب کنید غیرفعال کردن تکرارها
RandStuff آره آره خیر آره خیر
لات بازی کن وب سایت رسمی یا VKontakte خیر خیر آره آره آره
عدد تصادفی سایت رسمی خیر خیر خیر آره آره
راندوموس سایت رسمی آره خیر خیر آره خیر
اعداد تصادفی سایت رسمی آره خیر خیر خیر خیر

تمام برنامه های مورد بحث در جدول با جزئیات بیشتر در زیر توضیح داده شده است.

<Рис. 2 Случайные числа>

RandStuff

<Рис. 3 RandStuff>

می توانید با دنبال کردن پیوند به وب سایت رسمی آن http://randstuff.ru/number/ از این برنامه به صورت آنلاین استفاده کنید.

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

هم در قالب یک برنامه مستقل جداگانه در وب سایت رسمی و هم به عنوان یک برنامه در شبکه اجتماعی VKontakte با موفقیت اجرا می شود.

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

طرفداران:

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

معایب:

  • ناتوانی در انجام قرعه کشی VKontakte (این به یک برنامه جداگانه نیاز دارد).
  • برنامه های VKontakte در همه مرورگرها اجرا نمی شوند.
  • نتیجه گاهی اوقات قابل پیش بینی به نظر می رسد زیرا فقط یک الگوریتم محاسبه استفاده می شود.

نظرات کاربران در مورد این برنامه به شرح زیر است: "ما از طریق این سرویس برندگان را در گروه های VKontakte تعیین می کنیم. متشکرم، "شما بهترین هستید"، "من فقط از این سرویس استفاده می کنم."

لات بازی کن

<Рис. 4 Cast Lots>

این برنامه یک مولد تابع ساده است که در وب سایت رسمی در قالب یک برنامه VKontakte پیاده سازی شده است.

همچنین یک ویجت مولد برای درج در وب سایت شما وجود دارد.

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

یعنی هنگام انجام چندین نسل پشت سر هم در یک جلسه، تعداد تکرار نمی شود.

  • در دسترس بودن ویجت برای درج در وب سایت یا وبلاگ؛
  • امکان غیرفعال کردن تکرار نتایج؛
  • وجود تابع "تصادفی حتی بیشتر" که پس از فعال سازی آن الگوریتم انتخاب تغییر می کند.

منفی:

  • عدم توانایی در تعیین چندین نتیجه در یک زمان؛
  • عدم امکان انتخاب از یک لیست خاص از اعداد؛
  • برای انتخاب برنده در عموم، باید از ویجت جداگانه VKontakte استفاده کنید.

نظرات کاربران به شرح زیر است: "به طور پایدار کار می کند ، استفاده از آن کاملاً راحت است" ، "عملکرد راحت" ، "من فقط از این سرویس استفاده می کنم".

عدد تصادفی

<Рис. 5 Случайное число>

این سرویس در http://randomnumber.rf/ واقع شده است.

ژنراتور ساده با حداقل عملکردها و ویژگی های اضافی

می تواند به صورت تصادفی اعداد را در محدوده مشخص (حداکثر از 1 تا 99999) تولید کند.

این سایت هیچ گونه طراحی گرافیکی ندارد و به همین دلیل صفحه به راحتی بارگذاری می شود.

نتیجه را می توان با کلیک یک دکمه کپی یا دانلود کرد.

منفی:

  • عدم وجود ویجت برای VKontakte؛
  • امکان برگزاری قرعه کشی وجود ندارد.
  • هیچ راهی برای جاسازی نتیجه در وبلاگ یا وب سایت وجود ندارد.

در اینجا آنچه کاربران در مورد این سرویس می گویند: "یک مولد خوب، اما عملکرد کافی نیست"، "ویژگی های بسیار کم"، "مناسب برای تولید سریع اعداد بدون تنظیمات غیر ضروری."

راندوموس

<Рис. 6 Рандомус>

می توانید از این مولد اعداد تصادفی در http://randomus.ru/ استفاده کنید.

یکی دیگر، بسیار ساده، اما مولد اعداد تصادفی کاربردی

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

منفی:

  • عدم امکان نگهداری نقشه ها بر اساس ارسال مجدد یک پست و غیره.
  • هیچ برنامه کاربردی برای VKontakte یا ویجتی برای سایت وجود ندارد.
  • غیرفعال کردن تکرار نتایج ممکن نیست.

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

در مناطق دیگر نیز محبوب است. ما همچنین رمز و شماره داریم.

مولد اعداد تصادفی آنلاین ما.

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

به عنوان مثال، شما یک گروه VKontakte دارید. در گروه شما 5 جایزه از بین تعداد شرکت کنندگانی که پست را بازنشر می کنند برنده خواهید شد. با استفاده از یک برنامه ویژه، لیستی از شرکت کنندگان دریافت کردیم. هر کدام شماره سریال مخصوص به خود را برای شماره های آنلاین اختصاص دادند.

اکنون به مولد آنلاین خود می رویم و محدوده اعداد (تعداد شرکت کنندگان) را نشان می دهیم. به عنوان مثال، ما تنظیم کردیم که 5 شماره به صورت آنلاین مورد نیاز است، زیرا ما 5 جایزه داریم. حالا روی دکمه ی تولید کلیک کنید. سپس 5 عدد تصادفی را به صورت آنلاین دریافت می کنیم که از 1 تا 112 شامل می شود. 5 شماره تولید شده به صورت آنلاین با شماره سریال پنج شرکت کننده که برنده قرعه کشی شدند مطابقت دارد. همه چیز ساده و راحت است.

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

چرا مولد اعداد تصادفی بهترین است؟

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

مولد اعداد تصادفی آنلاین به صورت رایگان!

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

شماره تصادفی آنلاین

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

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

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

تصادفی آنلاین

تصادفی مطمئن ترین گزینه برای قرعه کشی است. ژنراتور آنلاین واقعاً یک انتخاب تصادفی است. شما از هر گونه تأثیری در انتخاب یک عدد تصادفی محافظت می‌شوید. با فیلمبرداری از روند انتخاب تصادفی آنلاین برنده در ویدیو. این تمام چیزی است که شما نیاز دارید. با مولد شماره آنلاین ما قرعه کشی های نمایشگاهی را به صورت آنلاین برگزار کنید. شما برندگان و بازیکنان راضی بدست می آورید. و ما خوشحالیم که توانستیم شما را با ژنراتور تصادفی خود راضی کنیم.

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

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

تابع اعداد تصادفی در اکسل

  1. تابع RAND یک عدد واقعی تصادفی و یکنواخت را برمی گرداند. کمتر از 1، بزرگتر یا مساوی 0 خواهد بود.
  2. تابع RANDBETWEEN یک عدد صحیح تصادفی برمی گرداند.

بیایید با مثال به کاربرد آنها نگاه کنیم.

نمونه برداری از اعداد تصادفی با استفاده از RAND

این تابع به آرگومان نیاز ندارد (RAND()).

به عنوان مثال، برای ایجاد یک عدد واقعی تصادفی در محدوده 1 تا 5، از فرمول زیر استفاده کنید: =RAND()*(5-1)+1.

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

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

  1. روی سلول با یک عدد تصادفی کلیک کنید.
  2. در نوار فرمول، فرمول را انتخاب کنید.
  3. F9 را فشار دهید. و وارد کنید.

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


محدوده مقادیر عمودی فرکانس است. افقی - "جیب".



تابع RANDBETWEEN

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

مثال استفاده از تابع:

اعداد تصادفی با دقت 0.1 و 0.01:

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

بیایید یک مولد اعداد تصادفی بسازیم که مقداری را از محدوده خاصی تولید می کند. ما از فرمولی مانند: =INDEX(A1:A10,INTEGER(RAND()*10)+1 استفاده می کنیم.

بیایید یک مولد اعداد تصادفی در محدوده 0 تا 100 در مراحل 10 بسازیم.

شما باید 2 مورد تصادفی را از لیست مقادیر متن انتخاب کنید. با استفاده از تابع RAND، مقادیر متن را در محدوده A1:A7 با اعداد تصادفی مقایسه می کنیم.

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

برای انتخاب یک مقدار تصادفی از لیست، از فرمول زیر استفاده کنید: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

توزیع نرمال مولد اعداد تصادفی

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

توزیع نرمال به این معنی است که اکثر اعداد تولید شده نزدیک به عدد هدف هستند. بیایید فرمول RANDBETWEEN را تنظیم کنیم و یک آرایه داده با توزیع نرمال ایجاد کنیم.

هزینه محصول X 100 روبل است. کل دسته تولید شده از توزیع نرمال پیروی می کند. یک متغیر تصادفی نیز از توزیع احتمال نرمال پیروی می کند.

در چنین شرایطی، مقدار متوسط ​​محدوده 100 روبل است. بیایید یک آرایه ایجاد کنیم و یک نمودار با توزیع نرمال با انحراف استاندارد 1.5 روبل بسازیم.

ما از تابع: =NORMINV(RAND();100;1.5) استفاده می کنیم.

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

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

بر اساس داده های به دست آمده، می توانیم نموداری با توزیع نرمال ایجاد کنیم. محور ارزش تعداد متغیرها در بازه است، محور دسته دوره ها است.