آیا کامپیوترها می‌توانند اعداد تصادفی واقعی تولید کنند؟

آیا کامپیوترها می‌توانند اعداد تصادفی واقعی تولید کنند؟

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

ماهیت تصادف

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

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

کامپیوترهای کلاسیک

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

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

مولّد اعداد شبه تصادفی (Pseudo-random number generator, PRNG)، که به مولد قطعی (deterministic) اعداد شبه تصادفی نیز معروف است، الگوریتمی است که از فرمول‌های ریاضی یا از جداول از پیش محاسبه شده برای تولید دنبال‌هایی از اعداد استفاده می‌کنند که به نظر تصادفی می‌رسند. PRNGها از یک عدد اولیه که به آن seed می‌گویند شروع می‌شوند و سپس از یک الگوریتم معین برای تولید دنباله‌ای از اعداد استفاده می‌کنند.

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

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

از نمونه‌های رایج PRNG می‌توان به موارد زیر اشاره کرد:

Linear Congruential Generator (LCG), Mersenne Twister, and Well Equidistributed Long-period linear (WELL)

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

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

مولد اعداد تصادفی واقعی (True random number generator, TRNG)، برخلاف PRNGها متکی بر الگوریتم‌ها نیستند، بلکه به پدیده‌های فیزیکی برای تولید تصادف تکیه می‌کنند. این پدیده‌های فیزیکی عموماً غیر قطعی هستند و اعداد حاصل را واقعاً تصادفی می‌کنند.

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

یکی از نمونه‌های محبوب TRNG، سایت random.org است. سرویسی که از نویزهای اتمسفر اعداد تصادفی تولید می‌کند. نمونه‌ای دیگر سرویس HotBits از Fourmilab است که اعداد تصادفی را از واپاشی رادیواکتیو تولید می‌کند.

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

کامپیوترهای کوانتومی

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

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

در تئوری می‌توان از این عدم قطعیت ذاتی که ویژگی کلیدی فیزیک کوانتوم است برای تولید اعداد واقعاً تصادفی استفاده کرد. یک QRNG از پدیده‌های فیزیکی از جمله حالت قطبی تصادفی یک فوتون به این منظور استفاده می‌کند.

در سال 2018، دانشمندان National Institute of Standards and Technology (NIST) یک QRNG را بر اساس ویژگی‌های مکانیک کوانتومی توسعه دادند. آنها از یک منبع کوانتومی (یک منبع فوتون) و یک آشکارساز کوانتومی برای تولید اعداد تصادفی استفاده کردند که نتیجه‌ی آن، یک QRNG فشرده، سریع و تطبیق پذیر بود.

در سال 2020، از ماهواره کوانتومی چینی Micius به عنوان اولین تولید کننده‌ی اعداد تصادفی کوانتومی مستقر در فضا استفاده شد. از این اعداد برای ایمن سازی تماس‌های ویدئو کنفرانس بین قاره‌های مختلف استفاده می‌شد.

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

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

رمزنگاری و امنیت کامپیوتر

یکی از برجسته‌ترین کاربردهای اعداد تصادفی، کاربرد آن در زمینه‌ی رمزنگاری است. از اعداد تصادفی برای تولید کلیدهایی برای فرآیند رمزنگاری (encryption) و رمزگشایی (decryption) استفاده می‌شود تا ارتباطات از طریق اینترنت را ایمن کنند. مولدهای اعداد شبه تصادفی امن رمزنگاری (Cryptographically secure pseudorandom number generators ,CSPRNG) که برای ایمن بودن در برابر حملات رمزنگاری طراحی شده‌اند، در این حوزه بسیار مهم هستند. QRNGها به دلیل عدم قطعیت ذاتی فرآیندهای کوانتومی، می‌توانند سطح امنیت بالاتری را نیز ارائه دهند.

شبیه سازی و مدل سازی

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

بازی

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

هنر و موسیقی

جای تعجب دارد که اعداد تصادفی در حوزه‌های خلاقانه نیز کاربردهایی دارند. اعداد تصادفی در Generative art برای ایجاد قطعاتی منحصر به فرد و غیرقابل تکرار مورد استفاده قرار می‌گیرند و یا در موسیقی برای ایجاد هارمونی‌ها و توالی‌های غیرمنتظره، در سبکی که به عنوان موسیقی «aleatoric» یا «chance» شناخته می‌شوند به کار می‌روند.

نمونه گیری آماری

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

کلام پایانی

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

از بهترین نوشته‌های کاربران سکان آکادمی در سکان پلاس