RStudio is now Posit
Posit

آموزش خصوصی برنامه نویسی

  • خانه
  • آموزش R
  • تفاوت اعداد شبه-تصادفی و اعداد کاملاً تصادفی در R
تفاوت اعداد شبه-تصادفی و اعداد کاملاً تصادفی در R

تفاوت اعداد شبه-تصادفی و اعداد کاملاً تصادفی در R

در بسیاری از موارد با این جمله مواجه شده ایم که “زبان های برنامه نویسی از جمله R اعداد شبه-تصادفی تولید می کنند”. اما این به چه معناست؟ در این مقاله، به این موضوع پرداخته ایم و سعی می کنیم به صورت شفاف تفاوت این دو مفهوم را برای شما تشریح کنیم. هدف این است که بدانیم تفاوت اعداد شبه-تصادفی با اعداد کاملاً-تصادفی در R چیست.

عدد تصادفی چیست؟

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

اصطلاح شبه-تصادفی (Pseudo Random) به چه معناست؟

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

اصطلاح کاملاً-تصادفی (True Random) به چه معناست؟

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

اعداد تولید شده در R از چه نوع هستند؟

تمامی اعداد تصادفی تولید شده در زبان برنامه نویسی R از نوع شبه-تصادفی هستند. بنابراین هر بار که شما از توابع تولید اعداد تصادفی مانند rnorm، runif و غیره استفاده می کنید، در واقع اعداد شبه-تصادفی تولید می کنید.