اعداد تصادفی به معنای یک عدد متفاوت در هر تکرار نیست. منظور از عدد تصادفی این است که نمیتوان به طور منطقی آن را پیش بینی کرد. رایانهها روی برنامهها کار میکنند و برنامهها مجموعهای قطعی از دستورالعملها هستند؛ بنابراین به این معنی است که باید الگوریتمی برای تولید یک عدد تصادفی نیز وجود داشته باشد. اگر برنامهای برای تولید اعداد تصادفی وجود داشته باشد، میتوان آن را پیش بینی کرد، بنابراین واقعاً تصادفی نیست. اعداد تصادفی تولید شده از طریق یک الگوریتم تولید، شبه تصادفی نامیده میشوند. برای تولید یک عدد تصادفی واقعی، باید دادههای تصادفی را از منابع خارجی دریافت کنیم. این منبع بیرونی عموماً فشار دادن کلید، حرکات ماوس، دادههای شبکه و غیره است. در حوزههای پردازشی، ما به اعداد واقعاً تصادفی نیاز نداریم، مگر اینکه مربوط به حوزههای امنیت باشند (مثلاً کلیدهای رمزگذاری) یا اساس کاربرد تصادفی باشد (به طور مثال: چرخهای رولت دیجیتال). در این آموزش از اعداد شبه تصادفی استفاده خواهد شد.
تولید اعداد تصادفی
کتابخانه NumPy ماژول random را برای کار با اعداد تصادفی ارائه میدهد. شکل ۱، تصویری از نحوه تولید اعداد تصادفی به کمک ماژول random و دستورات مختلف را نشان میدهد. در صورتیکه بخواهید اعداد تصادفی صحیح تولید کنید دستور randint میتواند به شما در این خصوص کمک کند. در صورتیکه بخواهید یک عدد تصادفی صحیح بین 0 تا 20 ایجاد کنید میتوانید از دستورات نوشته شده در شکل 1 استفاده کنید. با هر بار اجرای این دستورات یک عدد تصادفی ظاهر میشود. همانطور که در این شکل مشاهده میکنید با اجرای کدهای مربوطه جهت تولید اعداد تصادفی، در بار اول خروجی عدد 11 و برای بار دوم عدد تصادفی 17 ظاهر شد.
شکل 1) نحوه ایجاد یک عدد تصادفی صحیح
تولید اعداد تصادفی اعشاری بین صفر و یک
جهت تولید اعداد تصادفی اعشاری بین صفر و یک میتوان از دستور rand() استفاده کرد. شکل 2 نحوه ایجاد اعداد تصادفی اعشاری در بازه 0 تا 1 را نشان میدهد.
شکل 2) تولید عدد تصادفی اعشاری
ایجاد آرایه تصادفی
در NumPy با آرایهها سروکار داریم و شما میتوانید از دو روش مثالهای بالا برای ساخت آرایههای تصادفی استفاده کنید. به طور مثال اگر بخواهید 6 عدد تصادفی صحیح بین 0 تا 20 تولید کنید میتوانید سایز آرایه مورد نظر خود را به همراه دستور randint مشخص کنید تا یک آرایه تک بعدی از اعداد تصادفی صحیح ایجاد شود. برای تولید آرایهای از اعداد اعشاری بین صفر و یک نیز به مثالهای ذکر شده در ادامه توجه کنید. کافی است پس از دستور rand تعداد اعداد اعشاری مدنظر را به عنوان آرگومان ورودی وارد کنید. برای درک بهتر میتوانید مثالهای مطرح شده در شکل 3 را مشاهده کنید.
شکل 3) ایجاد آرایه تک بعدی از اعداد تصادفی صحیح و اعشاری
همچنین میتوان آرایههای دو بعدی نیز ایجاد کرد که در این صورت باید تعداد سطر و ستون را مشخص کنید. به طور مثال، در شکل 4 چند نمونه از آرایههای تصادفی نشان داده شده است. آرایههای دو بعدی شامل چهار ردیف هستند و در هر ردیف شامل 5 عدد است که ستونهای آرایه دو بعدی را نشان میدهد. اولین مثال ذکر شده مرتبط با اعداد تصادفی اعشاری بین صفر و ۱ است و مثال دوم مربوط به تولید اعداد تصادفی صحیح بین 0 تا 20 به صورت 4 ردیف و 5 ستون است.
شکل 4) نحوه ایجاد آرایههای دو بعدی تصادفی
ایجاد اعداد تصادفی از آرایه
دستور choice() به شما امکان میدهد یک مقدار تصادفی بر اساس آرایهای از مقادیر تولید کنید. دستور choice() یک آرایه را به عنوان پارامتر ورودی میگیرد و به صورت تصادفی یکی از مقادیر را برمیگرداند. همچنین میتوانید با اضافه کردن پارامتر size به دستور choice آرایههایی دو بعدی ایجاد کنید و تعداد سطر و ستون مورد نظر را نیز تعریف کنید. شکل 5 نحوه ایجاد اعداد تصادفی به کمک آرایه دلخواه را نشان میدهد.
شکل 5) نحوه ایجاد اعداد تصادفی از آرایه
توزیع تصادفی دادهها
توزیع دادهها لیستی از تمام مقادیر ممکن است و هر چند وقت یکبار هر مقدار رخ میدهد. چنین لیستهایی هنگام کار با آمار و علم داده مهم هستند. ماژول random روشهایی را ارائه میکند که توزیعهای دادهای تولید شده بهطور تصادفی را برمیگرداند. توزیع تصادفی، مجموعهای از اعداد تصادفی است که تابع چگالی احتمال مشخصی را دنبال میکنند. منظور از تابع چگالی احتمال، تابعی است که یک احتمال پیوسته را توصیف میکند. به طورمثال احتمال همه مقادیر در یک آرایه. میتوان اعداد تصادفی را بر اساس احتمالات تعریف شده با استفاده از روش choice() از ماژول random تولید کرد. روش choice() امکان مشخص کردن احتمال برای هر مقدار را میدهد. احتمال با عددی بین 0 و 1 تنظیم میشود که 0 به این معنی است که مقدار هرگز رخ نخواهد داد و 1 به این معنی است که مقدار همیشه رخ خواهد داد. به طور مثال اگر بخواهیم از یک آرایه تک بعدی دلخواه، هر عدد از آرایه با یک احتمال مشخص ظاهر شود میتوانید به صورت مثال ذکر شده در شکل 6 عمل کنید. در این مثال، 50 عدد شامل مقادیر 2، 3، 4 و 5 با احتمالهای 40%، 50%، 10% و 0% نشان داده شده است. همانطور که مشاهده میکنید مجموع احتمالات عدد1 و به دلیل اینکه احتمال رخداد عدد 5 به صورت 0% است، عدد 5 در خروجی ظاهر نشده است. همچنین به جای آرایه تک بعدی میتوان از آرایه دو بعدی نیز استفاده کرد که نحوه ایجاد این نوع آرایه که در این مثال به صورت 5 سطر و 8 ستون تعریف شده است در شکل 6 نشان داده شده است.
شکل 6) توزیع تصادفی دادهها
جایگشتهای تصادفی عناصر
جایگشت به ترتیبی از عناصر اشاره دارد. به عنوان مثال، [3، 2، 1] یک جایگشت از [1، 2، 3] است و بالعکس. ماژول random کتابخانه NumPy دو روش برای این کار ارائه میدهد: ()shuffle و ()permutation.
مخلوط کردن آرایهها
shuffle به معنای تغییر آرایش المانهای یک آرایه در مکان است. یعنی در خود آرایه، مکان اعداد آرایه جابهجا میشود. روش ()shuffle تغییراتی را در آرایه اصلی ایجاد میکند.
ایجاد جایگشت آرایهها
روش ()permutation یک آرایه مرتب شده جدید را باز میگرداند و آرایه اصلی را بدون تغییر حفظ میکند.
شکل7، نحوه استفاده از دستورات ()shuffle و ()permutation جهت ایجاد جایگشتهای تصادفی را نشان میدهد.
شکل 7) نحوه ایجاد جایگشتهای تصادفی
دیدگاه ها