ویرگول
ورودثبت نام
رضا ناظری
رضا ناظری
خواندن ۲ دقیقه·۱ سال پیش

تولید عدد رندوم غیر تکراری در پایتون

میخوایم ببینیم چطوری تو پایتون اعداد رندوم غیر تکراری تولید کنیم. 2 حالت براش درنظر می‌گیریم:

حالت اول

تو حالت اول میخوایم همه اعداد رندوم رو یکجا تولید کنیم و تو یه آرایه ذخیره کنیم. این روش خیلی سادست چون کتابخونه random این کارو برامون انجام میده:

تو این کد 100 تا عدد رندوم غیر تکراری تولید کردیم که بازه اعداد بین 1 تا 500. شامل خود 500 نمیشه درواقع تا 499 اما شامل عدد 1 میشه.

روش کار تابع sample به این صورته که دوتا ورودی ازمون میخواد تا اعداد رو تولید کنه. اول بازه اعداد رو میگیم. یعنی میگیم میخوایم اعدادمون تو چه رنجی باشه و بعد تعداد اعداد رندومی که میخوایم برامون تولید بشه. قطعا تعداد اعداد نباید از طول بازمون بیشتر باشه وگرنه ارور میده. به همین سادگی ?

حالت دوم

حالت دوم به این صورت که میخوایم اعداد رو تکی تکی تولید کنیم اما غیر تکراری و به آرایمون اضافه کنیم.

مشاهده کد

عملکرد این کد هم مثل قبلیه اما اعداد تکی تکی تولید شدن و به آرایه اضافه شده. یه آرایه خالی numbers داریم که میخوایم اعداد رو بهش اضافه کنیم.

خط 13 یک حلقه می‌نویسیم به تعداد اعدادی که میخوایم تولید کنیم که 100 هست. برای تولید عدد رندوم یه تابع می‌نویسیم که کدمون مرتب تر باشه به اسم getUniqueRandom توی یه حلقه بی‌نهایت یک عدد رندوم تولید میکنم و چک میکنم توی لیستم هست یا نه. به این دلیل حلقم بی‌نهایته که میخوام تا زمانی که عدد غیرتکراری پیدا نشده ادامه بده. بعد از اینکه عدد پیدا شد return میکنمش و حلقه هم تموم میشه.

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

تمرین

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

برنامه نویسیپایتون
Software Engineer | Specialized in C# and ASP.NET | I help companies create Profitable applications with high performance and scalable solutions
شاید از این پست‌ها خوشتان بیاید