ژئوماتیک

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

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

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

کامپیوترها اعداد تصادفی (رندوم) را برای موضوعات گوناگون تولید می کنند؛ از مبحث رمزنگاری گرفته تا بازی های ویدیویی و شرط بندی. دو دسته عدد تصادفی وجود دارد: اعداد تصادفی واقعی و اعداد شبه تصادفی، که تفاوت این دو دسته در رمزگذاری سیستم های امنیتی بسیار حائز اهمیت خواهد بود. موضوع مهم دیگر مفهوم “تصادفی بودن” اعداد در دانش رمزنگاری است. رمزنگاری به اعدادی نیاز دارد که توسط مهاجمان و سارقان قابل حدس و پیش بینی نباشد. برای تولید یک عدد تصادفی “واقعی” کامپیوتر بعضی از پدیده های فیزیکی که بیرون از آن روی می دهد را اندازه گیری می کند. به عنوان یک مثال ساده کامپیوتر می تواند از مدت زمان دقیق فشردن کلیدهای صفحه کلید به عنوان یک منبع داده غیرقابل پیش بینی استفاده کند و از طرفی با در دسترس قرار دادن اطلاعات زمانیِ لحظۀ رخ دادن این عمل، تولید یک عدد تصادفی واقعی را برای ما ممکن سازد. در سویی دیگر اعداد شبه تصادفی قرار دارند که برای تولید آن ها کامپیوتر از مقادیری تحت عنوان seed و الگوریتم های ریاضی استفاده می کند تا اعدادی که به ظاهر تصادفی (و در واقعیت قابل پیش بینی) هستند را تولید نماید.

اعداد تصادفی در متلب (MATLAB)

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

چرا اعداد تصادفی متلب بعد از هر بار اجرای نرم افزار تکرار می شوند؟

تمام توابع اعداد تصادفی متلب مانند unidrnd ، randperm ، randi ، randn ، rand  مقادیر خود را از یک مولد اعداد تصادفی اشتراکی بیرون می کشند. هر بار که شما متلب را اجرا می کنید، این مولد خودش را به شرایط پیش فرض بر می گرداند. بنابراین دستوری مانند rand(2,2) هر باری که بلافاصله بعد از اجرای متلب فراخوانی شود نتیجۀ یکسانی نمایش خواهد داد. همین طور برای یک اسکریپت یا تابعی که اعداد تصادفی را فراخوانی می کند هر بار که با متلب شروع به کار می کنیم نتایج مشابهی را به دست خواهیم آورد.

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

هنگام شروع به کار با متلب برای جلوگیری از تکرار آرایه های تصادفی، قبل از فراخوانی توابع تولید اعداد تصادفی، فرمان rng(‘shuffle’) را اجرا کنید. این دستور مولد اعداد تصادفی را بر اساس زمان جاری در هم می آمیزد و تضمین می کند که نسبت به اجرای قبلی نرم افزار نتایج تکراری تولید نخواهد کرد. می توانید دستور rng(‘shuffle’) را به فایل startup.m نیز اضافه نمایید تا در هر اجرای مجدد نرم افزار مولد اعداد تصادفی در هم آمیخته شود.  دستور rng(‘default’) تنظیمات مولد اعداد تصادفی را به مقادیر پیش فرض باز می گرداند. به این صورت همان اعداد تصادفی تولید خواهند شد که در شروع دوبارۀ نرم افزار تولید می شدند. اگر در تولید اعداد تصادفی به کنترل های پیشرفته تری نیاز دارید از کلاس RandStream استفاده نمایید.

نویسندهحمید غیور

دیدگاهتان را بنویسید