سلام دوستان! امروز میخوایم در مورد یک موضوع جالب و البته کمی فنی صحبت کنیم: تولید کنندههای اعداد تصادفی شبه تصادفی، یا به اختصار PRNG. شاید با خودتون فکر کنید کامپیوترها که این همه کار انجام میدن، تولید یک عدد تصادفی دیگه کاری نداره! ولی قضیه از اون چیزی که فکر میکنید پیچیدهتره.
اول از همه، باید بدونیم که کامپیوترها ماشینهای deterministic هستند، یعنی عملکردشون کاملاً قابل پیشبینی هست. اگه یک ورودی مشخص بهشون بدید، همیشه همون خروجی رو تولید میکنند. پس چطور میتونن عدد تصادفی تولید کنند؟
اینجاست که PRNGها وارد صحنه میشن. PRNG مخفف "Pseudo-Random Number Generator" هست، یعنی "تولید کننده اعداد شبه تصادفی". این یعنی این الگوریتمها در واقع اعداد کاملا تصادفی تولید نمیکنند، بلکه یک دنباله از اعداد رو تولید میکنند که ظاهرشون تصادفی هست.
به بیان سادهتر، PRNGها از یک فرمول ریاضی استفاده میکنند تا یک دنباله از اعداد رو تولید کنند. این فرمول بر اساس یک "دانه" (seed) اولیه کار میکنه. اگه دانه اولیه یکسان باشه، PRNG همیشه همون دنباله از اعداد رو تولید میکنه.
چرا از اعداد شبه تصادفی استفاده میکنیم؟
خب، اگه اعداد PRNG واقعاً تصادفی نیستند، پس چرا ازشون استفاده میکنیم؟ چند دلیل مهم داره:
انواع PRNG:
PRNGهای مختلفی وجود دارند، هر کدوم با الگوریتم و ویژگیهای خاص خودشون. بعضی از رایجترین اونها عبارتند از:
برای اینکه بهتر متوجه بشید، یک مثال خیلی ساده از یک PRNG (البته خیلی خیلی ساده و برای آموزش!) رو اینجا میاریم:
def simple_prng(seed): a = 1664525 c = 1013904223 m = 2**32 seed = (a * seed + c) % m return seed
این کد در واقع یک تابع هست که یک دانه اولیه (seed) رو میگیره و یک عدد شبه تصادفی جدید تولید میکنه. هر بار که این تابع رو صدا بزنید، یک عدد جدید تولید میشه که بر اساس عدد قبلی محاسبه شده. البته این فقط یک مثال ساده هست و برای کارهای جدی مناسب نیست!
جدول مقایسهای:
ویژگی | PRNG | اعداد تصادفی واقعی |
---|---|---|
سرعت | بالا | پایین |
تکرارپذیری | دارد | ندارد |
قابل پیشبینی | بله (اگر دانه اولیه رو بدونیم) | خیر |
منابع تولید | الگوریتم | پدیدههای فیزیکی (مثل نویز حرارتی) |
کاربردهای PRNG:
PRNGها کاربردهای خیلی زیادی دارند، از جمله:
در این قسمت در مرورد کاربرد PRNG در شببه سازی صحبت می کنیم. تصور کنید میخواهید ترافیک یک چهارراه رو شبیهسازی کنید. میتونید از یک PRNG استفاده کنید تا زمان رسیدن ماشینها، جهت حرکتشون و سرعتشون رو بهصورت تصادفی تعیین کنید. با تغییر دانه اولیه، هر بار یک شبیهسازی متفاوت خواهید داشت، اما در عین حال، میتونید با استفاده از یک دانه اولیه مشخص، یک شبیهسازی خاص رو دوباره اجرا کنید و نتایج رو با دقت بررسی کنید. این قابلیت تکرارپذیری برای تست و بهبود مدل شبیهسازی خیلی مفیده. همچنین با استفاده از PRNG می توان در یک محیط مجازی به عنوان یک ربات تصممی های تصادفی برای تست برنامه های خودمان گرفت.
خلاصه:
PRNGها ابزارهای قدرتمندی هستند که به ما امکان میدن اعداد تصادفی شبه تصادفی رو به سرعت و با قابلیت تکرار تولید کنیم. با اینکه این اعداد کاملاً تصادفی نیستند، ولی برای بسیاری از کاربردها کافی و مناسب هستند. فهمیدن نحوه کارکرد PRNGها و محدودیتهاشون برای هر کسی که با کامپیوتر کار میکنه، خیلی مهمه.
وقتی به PRNG به عنوان مخفف Pseudo Random Number Generator اشاره می کنیم، منظور این است که PRNG با گرفتن حروف اولیه هر کلمه مهم در Pseudo Random Number Generator تشکیل می شود. این فرآیند عبارت اصلی را به شکلی کوتاه تر و قابل مدیریت تر فشرده می کند و در عین حال معنای اصلی خود را حفظ می کند. بر اساس این تعریف، PRNG مخفف Pseudo Random Number Generator است.
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved