Skip to main content
🟢 Beginner 🔥 Popular

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

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

چه چیزی یک ژنراتور عدد تصادفی است؟

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

تصادف واقعی از پدیده های فیزیکی است که به طور ذاتی غیرقابل پیش بینی هستند: شکافت رادیواکتیو، نوفه جو، نوفه حرارتی در مدارهای الکترونیکی یا وقوع تونلینگ کوانتومی. ژنراتورهای RNG سخت افزاری این پدیده ها را برای تولید جریان های بیت تصادفی واقعی اندازه گیری می کنند. خدمات مانند random.org از نوفه جو را از گیرنده های رادیویی برای ارائه اعداد تصادفی واقعی جمع آوری می کنند.

عدد های تصادفی تولید شده توسط کامپیوتر ها به طور فنی تصادفی پوزیتور هستند — آنها یک دنباله های تعیین شده هستند که به نظر تصادفی می آیند اما کاملاً توسط یک مقدار اولیه به نام بذر تعیین می شوند. با بکارگیری بذر یکسان، یک ژنراتور عدد تصادفی پوزیتور (PRNG) دنباله ای دقیقاً مشابه را تولید می کند. این کار مفید است برای تکرارپذیری در شبیه سازی های علمی: بذر را تنظیم کنید، آن را ضبط کنید و می توانید نتایج خود را بعداً تکرار کنید.

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

PRNG های مدرن از الگوریتم های ریاضی برای تولید دنباله های با ویژگی های آماری عالی استفاده می کنند. الگوریتم مورد استفاده ترین، مریسن توریستر (MT19937) است که توسط ماتسوموتو و نیشیمورا در سال 1997 توسعه یافته است. این الگوریتم دارای دوره ای برابر با 2^19937 − 1 (یک عدد با تقریباً 6،000 رقم) قبل از تکرار است، تمام تست های آماری استاندارد را برای تصادف می گذراند و به عنوان ژنراتور عدد تصادفی پیش فرض در پایتون، PHP، Ruby، R و بسیاری از زبان های دیگر است.

الگوریتم های جدیدتر شامل xoshiro/xoroshiro (بسیار سریع، کوچک) و PCG (ژنراتور کنگره ای) (کیفیت آماری عالی با کوچک بودن) هستند. برای کاربردهای رمزنگاری، این PRNG های استاندارد کافی نیستند — ژنراتورهای عدد تصادفی امن رمزنگاری (CSPRNG) مورد نیاز هستند زیرا PRNG های استاندارد می توانند پیش بینی شوند اگر یک حمله گر کافی از خروجی ها را بداند.

مرورگرها از طریق API crypto.getRandomValues() دسترسی به یک CSPRNG را فراهم می کنند که این کالبکر از آن برای تولید اعداد تصادفی استفاده می کند. این کار به طور قابل توجهی امن تر از Math.random() است که از یک PRNG ساده استفاده می کند و نباید برای کاربردهای حساس به امنیت استفاده شود.

الگوریتمدورهسرعترمزنگاری؟در
Math.random()بسته به پیاده سازیبسیار سریعنهJS مرورگر (غیر رمزنگاری)
Mersenne Twister2^19937 − 1فورینهپایتون، R، MATLAB
xoshiro256**2^256 − 1بسیار سریعنهRust، .NET، Julia
PCG-642^128فورینهNumPy، بسیاری از زبان ها
ChaCha20فوریبلهLinux /dev/urandom، TLS
FortunaمتوسطبلهmacOS، iOS، Windows

کاربردهای مشترک برای اعداد تصادفی

بازی ها و سرگرمی: پرتاب سکه، شلوغ کردن کارت، تولید سطح های فرا پردازشی، سیستم های لوت، رفتار تصادفی NPC. تجربه کامل بازی های رگولایک (Nethack، Spelunky، Hades) بر اساس تصادف خوب و غیرقابل پیش بینی است.

彩票 ها و قرعه کشی: انتخاب تصادفی برای جوایز، قرعه کشی، انتخاب هیئت منصفه، انتخاب قرعه کشی و هر تخصیص عادلانه از یک منبع محدود بین رقبای. انتخاب تصادفی واقعی تضمین می کند بی طرفی وجود ندارد.

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

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

رمزنگاری و امنیت: تولید کلید برای رمزگذاری، تولید توکن های جلسه، چالش های CAPTCHA، رمز های یک بار مصرف (OTP/2FA)، مقادیر نمک برای رمزگذاری رمزگذاری شده، و غیره در پروتکل های رمزنگاری نیاز به تصادف خوب دارند. تصادف ضعیف در کاربردهای رمزنگاری می تواند وخیم باشد — این کار منجر به نقض های امنیتی واقعی شده است.

برنامه نویسی کامپیوتر: تولید داده های تست، تست بارگذاری، فوزینگ (یافتن باگ ها با دادن ورودی های تصادفی به نرم افزار)، تخصیص A/B، الگوریتم های شلوغ کردن (مانند ویژگی "شلوغ کردن" اسپاتیفای) و تست شبیه سازی.

برابری و انتظارات آماری

یک ژنراتور تصادفی عادلانه به هر مقدار در بازه‌ای احتمال برابر می‌دهد. برای یک بازه 1–6 (مانند یک کوبنده)، هر عدد باید تقریباً 1/6 ≈ 16.67% در طول بسیاری از دورها ظاهر شود. اما در دورهای کوتاه، انحرافات طبیعی و انتظار داده می‌شود — این همان چیزی است که احتمال به ما می‌گوید.

قانون بزرگ عددی بیان می‌کند که با افزایش تعداد آزمایش‌ها، فرکانس‌های مشاهده شده به احتمالات نظری نزدیک می‌شوند. یک کوبنده را 12 بار رول کنید و ممکن است ببینید {1,3,5,6,2,1,4,3,2,6,5,4} — دقیقاً 2 عدد از هر عدد نیست. آن را 60,000 بار رول کنید و نزدیک به 10,000 عدد از هر عدد می‌بینید. این همگرایی توسط قانون تضمین می‌شود، اما الگوهای کوتاه مدت نیستند.

افسردگی بازیکن این باور اشتباه است که نتایج گذشته بر نتایج آینده در رویدادهای مستقل تأثیر می‌گذارند. پنج سر برابری در پی یکدیگر به معنای «سرهای دیگر» نیست. هر فلیپ مستقل است؛ سکه هیچ حافظه‌ای ندارد. به همین ترتیب، یک ژنراتور تصادفی که قبلاً 7 تولید کرده است، احتمال کمتری برای تولید 7 مجدداً در تماس بعدی ندارد.

بازهاحتمال در هر مقدارفرکانس مورد انتظار (در 1000)مورد استفاده معمول
1–250%500شبیه‌سازی پرتاب سکه
1–616.67%167شبیه‌سازی پرتاب کوبنده
1–1010%100انتخاب دسیله
1–521.92%19کارت بازی
1–1001%10پنجاهه/مورد استفاده عام
1–1,000,0000.0001%0.001تکتیک لاتری

تولید عدد تصادفی در علوم: روش‌های مونته کارلو

روش‌های مونته کارلو از نمونه‌گیری تصادفی برای حل مشکلاتی استفاده می‌کنند که از نظر تحلیلی دشوار یا غیرممکن هستند. به دلیل نامگذاری آنها به نام کازینوی موناکو (برای دلایل آشکار)، این روش‌ها مشکلاتی را که سخت و deterministic هستند به مشکلاتی تبدیل می‌کنند که با استفاده از شبیه‌سازی قابل حل هستند.

برآورد π: نقاط تصادفی را در یک مربع واحد (x,y هر کدام در [0,1] یکنواخت) تولید کنید. تعداد آن‌ها را که در داخل دایره واحد (x² + y² ≤ 1) قرار دارند، شمارید. نسبت آن‌ها به π/4 است. با 1 میلیون نقطه تصادفی، می‌توانید π را تا حدود 3–4 رقم بعد برآورد کنید. این یک روش غیرمعمول برای محاسبه π است، اما زیبایی و قدرت تصادف را به زیبایی نشان می‌دهد.

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

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

تولید اعداد تصادفی یکتا (بدون جایگزینی)

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

الگوریتم استاندارد برای این کار، شفت فیشر-ییتس (همچنین به عنوان شفت کانت شناخته می‌شود) است. برای یک آرایه n عنصر: از آخرین عنصر شروع کنید، آن را با یک عنصر تصادفی انتخاب شده از آرایه کل (ب含 خود) جایگزین کنید، سپس به عنصر دوم قبل از آخر بروید، آن را با یک عنصر تصادفی از آن‌هایی که باقی مانده‌اند جایگزین کنید و ادامه دهید. نتیجه یک ترکیب تصادفی یکنواخت در O(n) زمان است.

برای تولید k عدد تصادفی یکتا از بازه [min, max]: یک آرایه از تمام مقادیر در بازه ایجاد کنید، شفت فیشر-ییتس را اعمال کنید، اولین k عناصر را بگیرید. این تضمین می‌کند که هر ترکیب k مقدار یکنواخت است — یک نمونه‌گیری یکنواخت بدون جایگزینی.

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

موتورهای تصادفی برای تصمیم گیری های روزمره به طور شگفت انگیز مفید هستند:

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

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

آموزش و تمرین: دانش آموزانی که از کارت های یادآوری استفاده می کنند، از ترتیب تصادفی - آن ها را از یادگیری "گزینه های زمینه" (دانستن پاسخ کارت 15 به دلیل اینکه قبلاً پاسخ کارت 14 را داده اید) جلوگیری می کند. ترکیب تصادفی مشکلات تمرین، یک تکنیک اثبات شده (تمرین متشکل) است که در مقایسه با تمرین بلوکه شده، حافظه بلند مدت را تقویت می کند.

لهجه خلاقیت: نویسندگان، هنرمندان و موسیقی دانان از موتورهای کلمه تصادفی، موتورهای提示 و ابزارهای محدودیت تصادفی برای غلبه بر بلوک های خلاق استفاده می کنند. محدودیت های تصادفی اغلب راه حل های خلاق و جالب و غیرمنتظره ای را الزامی می کنند.

سوال‌های متداول

آیا این ژنراتور کاملاً تصادفی است؟

از API crypto.getRandomValues() مرورگر خود استفاده می‌کند که یک ژنراتور تصادفی پوزیتو-رندوم (CSPRNG) است. برای بازی‌ها، تصمیم‌گیری‌ها، آمار و قرعه کشی، این کاملاً شبیه به تصادف واقعی است. برای تصادف واقعی absolute (از پدیده‌های فیزیکی)، از ژنراتورهای سخت‌افزاری یا خدمات مانند random.org استفاده کنید.

می‌توانم بدون تکرار عدد تصادفی بسازم؟

بله — این به نام نمونه‌گیری بدون جایگزینی است. کالبکر از الگوریتم شافل فیشر-ییتس استفاده می‌کند: تمام مقادیر را در بازه تولید کنید، آنها را تصادفی شوفل کنید، اولین N را بازگردانید. این تضمین می‌کند که هر مقدار حداکثر یک بار ظاهر می‌شود و هر ترکیب برابر احتمال دارد.

چance احتمال گرفتن یک عدد دوبار یکسان است؟

با جایگزینی (حالت استاندارد)، برای یک بازه N، احتمال گرفتن یک مقدار یکسان در دو کشف متوالی 1/N است. برای بازه 1–100: 1% در هر جفت. در طول کشف‌های بسیاری، تکرارها انتظار می‌رود و طبیعی است. با "بدون تکرار"، تکرارهای متوالی غیرممکن است.

می‌توانم از این برای انتخاب شماره لاتری استفاده کنم؟

بله. بازه را به مطابقت با لاتری خود تنظیم کنید (مثلاً 1–49) و "بدون تکرار" را فعال کنید تا اعداد یکتا را انتخاب کنید. هر ترکیب برابر احتمال دارد — هیچ عدد یا ترکیبی بیش از حد یا کم احتمال ندارد. لاتری خود تصادفی است، بنابراین هر روش انتخابی معادل است.

چیستی seed در ژنراتور تصادفی؟

seed یک مقدار اولیه برای ژنراتور تصادفی پوزیتو-رندوم است. seed یکسان همیشه یک دنباله یکسان تولید می‌کند. این برای شبیه‌سازی‌های قابل تکرار مفید است — seed را تنظیم کنید، شبیه‌سازی را اجرا کنید، seed را ضبط کنید، و می‌توانید دنباله تصادفی یکسان را بعداً برای تأیید یا ترمیم مجدد استفاده کنید.

چطور می‌توانم یک عنصر تصادفی از یک فهرست انتخاب کنم؟

عناصر را شماره‌گذاری کنید 1 تا N، سپس یک عدد تصادفی بین 1 تا N تولید کنید. عنصر متناظر انتخاب تصادفی شما است. برای مثال، برای انتخاب تصادفی از 7 عضو تیم، یک عدد تصادفی بین 1 تا 7 تولید کنید. هر عضو 1/7 ≈ 14.3% chance انتخاب دارد.

آیا Math.random() در جاوا اسکریپت کاملاً تصادفی است؟

نه. Math.random() یک PRNG ساده با هیچ تضمین امنیتی ندارد. برای بازی‌ها و برنامه‌های غیر حساس کافی است، اما برای کاربردهای امنیتی (تولید کلید، توکن‌ها، رمز عبور) هرگز استفاده نشود. برای کاربردهای امنیتی، همیشه از crypto.getRandomValues() یا یک ژنراتور CSPRNG سرور استفاده کنید.

چیستی تفاوت بین PRNG و CSPRNG؟

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

چیستی شبیه‌سازی مونته کارلو؟

شبیه‌سازی مونته کارلو از تعداد زیادی نمونه تصادفی برای برآورد مقادیر پیچیده استفاده می‌کند. مثال: برآورد π با قرار دادن تصادفی نقاط در یک مربع حاوی یک دایره — نسبت نقاط داخل دایره به کل نقاط به π/4 نزدیک می‌شود. روش‌های مونته کارلو در مالی، فیزیک، مهندسی و آمار استفاده می‌شوند.

می‌توانند ژنراتورهای تصادفی تابعی داشته باشند؟

ژنراتورهای ضعیف ممکن است تابعی داشته باشند — برخی مقادیر به طور فراگیرتر یا کمتر ظاهر می‌شوند، یا همبستگی بین مقادیر متوالی وجود دارد. کیفیت با تست‌های آماری (تست NIST، تست TestU01 BigCrush) اندازه‌گیری می‌شود. الگوریتم‌های مدرن مانند مرسن تویستر، PCG و xoshiro تمام تست‌های استاندارد را می‌گذرانند و برای مقاصد عملی بی‌طرف هستند.

تعدادهای تصادفی در بازی‌ها و تولید محتوا با استفاده از الگوریتم

بازی‌های ویدیویی بر اساس تصادف بنا شده‌اند. از تولید تصادفی بلوک‌های بازی در ایجاد جهان ماینکرافت تا شلوغی رفتار هوش مصنوعی دشمنان، تصادف با کیفیت بالا تجربه‌های قابل بازی مجدد و غیرقابل پیش‌بینی را ایجاد می‌کند. تولید محتوا با استفاده از الگوریتم‌های تصادفی (PCG) با محدودیت‌های ریاضی، محتوا وسیع با کمترین تلاش دستیابی‌پذیر است — ۱۸ کوانتیتلیون سیاره در بازی No Man's Sky با استفاده از بذرهای تصادفی تولید شده‌اند.

بازی‌های روگلاک مانند Nethack، Spelunky و Hades از طریق تولید تصادفی سطح‌ها، جایگزینی دشمنان و توزیع اشیا را تعریف می‌کنند. هر بار بازی یک سطح تصادفی ایجاد می‌کند، جایگزینی دشمنان و توزیع اشیا. بازی این تصادف را بذر می‌کند تا بازیکنان احساس عدالت کنند (RNG نمی‌تواند تصمیم تصادفی ببیند که شما فوراً بمیرید) در حالی که غیرقابل پیش‌بینی باقی می‌ماند. بسیاری از بازی‌های روگلاک سطح بذر را نمایش می‌دهند تا بازیکنان بتوانند یک بازی یکسان را تکرار کنند یا بذرهای جالب را با دیگران به اشتراک بگذارند.

بازی‌های کاغذی از قرن‌ها برای استفاده از تصادف فیزیکی (شش وجهی، کارت‌های شلوغ شده، چرخنده) استفاده کرده‌اند. معادلات دیجیتالی باید این توزیع‌ها را دقیقاً شبیه‌سازی کنند. یک رول استاندارد شش وجهی از توزیع یکنواخت استفاده می‌کند {1,2,3,4,5,6}. یک کشیدن از یک دسته شلوغ شده از توزیع تصادفی استفاده می‌کند. برخی از بازی‌ها از پلی‌های شش وجهی (رول چندین شش وجهی، بالاترین را بگیرید) یا شش وجهی با مزیت/ضد مزیت — برای دستیابی به توزیع احتمالات مورد نظر با طراحی آماری دقت لازم را نیاز دارند.

تولید توزیع‌های دیگر از طریق عدد تصادفی یکنواخت

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

ترانسفر Box-Muller عدد تصادفی‌های نرمال را از دو عدد تصادفی یکنواخت U₁ و U₂ تولید می‌کند: Z₁ = √(−2ln(U₁)) × cos(2πU₂) و Z₂ = √(−2ln(U₁)) × sin(2πU₂). هر دو Z₁ و Z₂ توزیع نرمال استاندارد N(0,1) را دنبال می‌کنند. مقیاس با Z × σ + μ برای N(μ,σ²) را بدست می‌آورید.

روش تبدیل معکوس از طریق معکوس تابع توزیع جمعی (CDF) استفاده می‌کند. برای توزیع اگزونومیکال با نرخ λ: X = −ln(1−U)/λ جایی که U یک عدد تصادفی یکنواخت در [0,1] است. این روش مستقیماً یک متغیر تصادفی یکنواخت را به یک عدد تصادفی اگزونومیکال تبدیل می‌کند. این روش برای هر توزیع با یک CDF قابل معکوس بودن کار می‌کند.

آزمایش‌های آماری برای تصادفی‌سازی

چطور می‌توانیم تأیید کنیم که یک ژنراتور عدد تصادفی واقعاً تصادفی است؟ آزمایش‌های آماری بررسی می‌کنند که آیا یک دنباله از اعداد الگوهایی را نشان می‌دهد که در یک دنباله تصادفی واقعی غیرممکن است.套件 آزمایش آماری NIST 15 آزمایشی را برای ارزیابی RNG برای کاربردهای رمزنگاری دارد. آزمایش‌های کلیدی شامل:

آزمایش فرکانس (Monobit): بررسی می‌کند که آیا 0ها و 1ها با فرکانس برابر در نمایندگی دودویی اعداد تولید شده رخ می‌دهند. یک سکه مضراب که 60 درصد از زمان سر می‌خورد، این آزمایش را شکست می‌خورد.

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

آزمایش سری: بررسی می‌کند که آیا زوج‌ها، سه‌تایی‌ها یا چهارگانه‌های ارزش‌ها با فرکانس برابر رخ می‌دهند. اگر ژنراتور دنباله‌ای مانند 1,2,3,4,5,6,1,2,3,4,5,6... تولید کند، آزمایش فرکانس را می‌گذارد اما آزمایش سری را شکست می‌دهد — زوج‌ها غیر تصادفی هستند.

آزمایش آماریچه چیزی را تشخیص می‌دهدسوئیت آزمایش NIST؟
فرکانس (Monobit)فرکانس نابرابر 0/1بله
آزمایش رانتعداد زیاد/کم ران‌های یکسانبله
آوتوکورلاسیونارزش‌ها با ارزش‌های قبلی مرتبط هستندبله
Chi-Squareتوزیع غیر یکنواختبله (آزمایش فرکانس)
Birthday Spacingفاصله‌های هم‌چنین زیاد بین اعداداز طریق TestU01
Diehardآزمایش‌های چندگانه الگوسوئیت جداگانه

سوئیت آزمایش "BigCrush" TestU01 به عنوان آزمون پراکندگی سخت‌ترین آزمایش عملی است — 106 آزمایش را اجرا می‌کند و بسیاری از الگوریتم‌ها را که در سوئیت‌های آزمایش کوچکتر رد می‌کند، رد می‌کند. الگوریتم‌های مدرن مانند PCG و xoshiro BigCrush را می‌گذارد؛ الگوریتم‌های خطی کنگره‌ای که در کتابخانه‌های C قدیمی استفاده می‌شدند، چندین آزمایش را شکست می‌دهند و برای کاربردهای کیفیت نباید استفاده شوند.

استفاده از این ژنراتور تصادفی‌سازی

حداقل و حداکثر را برای تعریف محدوده خود تنظیم کنید. "چند" را برای تولید اعداد چندگانه در یک بار تنظیم کنید. گزینه "بدون تکرار" را فعال کنید تا یک لیست از اعداد یکتا تولید کنید (نمونه‌گیری بدون جایگزینی) — مناسب برای انتخاب‌های لاتری، کشیدن کارت‌ها یا اختصاص دادن شرکت‌کنندگان به گروه‌ها بدون تکرار. دنباله تولید شده از API تصادفی‌سازی وبگردی برای نتایج با کیفیت بالا برای هر هدف غیر امن استفاده می‌کند. برای استفاده از لاتری، اعداد برابر با تعداد انتخاب مورد نیاز را در محدوده لاتری تولید کنید. برای استفاده از قرعه کشی، اعداد متوالی را به ورودی‌ها اختصاص دهید و عدد متناظر را کشیده و بکشید. نتایج هر بار که دکمه را کلیک می‌کنید، تازه تولید می‌شوند — نتایج قبلی ذخیره یا ردیابی نمی‌شوند.