مشکل در ایجاد متغیر رندوم
#1
Wink 
سلام دوستان وقت همگی بخیر امیدوارم حالتون خوب باشه
من الان دارم یه متغیر تعریف می کنم که هر 2 ثانیه عددی رو از بین 1 تا 10 انتخاب کنه تا اینجا اینو نوشتم:
int(random(1,10))
اما میخوام دو ثانیه بعد هم همین عمل دوباره انجام بشه با این تفاوت که دیگه اون عددی که الان انتخاب شد جزوشون نباشه و حذف بشه.مثلا اگه الان 4 انتخاب شد به صورت رندوم، 2 ثانیه بعد از 1 تا 10 به جز 4 به صورت شانسی انتخاب بشه.چه ایونتی باید بنویسم؟

 
  پاسخ


 سپاس شده توسط:
#2
(1400/2/2، 09:38 عصر)jaunty051 نوشته است: سلام دوستان وقت همگی بخیر امیدوارم حالتون خوب باشه
من الان دارم یه متغیر تعریف می کنم که هر 2 ثانیه عددی رو از بین 1 تا 10 انتخاب کنه تا اینجا اینو نوشتم:
int(random(1,10))
اما میخوام دو ثانیه بعد هم همین عمل دوباره انجام بشه با این تفاوت که دیگه اون عددی که الان انتخاب شد جزوشون نباشه و حذف بشه.مثلا اگه الان 4 انتخاب شد به صورت رندوم، 2 ثانیه بعد از 1 تا 10 به جز 4 به صورت شانسی انتخاب بشه.چه ایونتی باید بنویسم؟

 
سلام؛
کانستراکت 2 اکسپرشن یا اکشنی نداره که اعداد رندوم بدون تکرار تولید کنه. در نتیجه باید خودتون یک ساز و کـار طراحی کنین که این قضیه رو مدیریت کنه.
اولین چیزی که باید بررسی بشه اینه که انتظاری که شما برای تولید اعداد رندوم منحصر به فرد و غیر تکراری دارین چقدر با واقعیت همخوانی داره! 
تـوی پرسشتون که قید کردین هر دو ثانیه یک عدد تصادفی بین یک تا ده انتخاب بشه خُب باید بدونین که بعد از دهمین دو ثانیه (20 ثانیه) عملاً هیچ رقم جدید و منحصر به فردی نمیتونین ارائه بدین و به تکرار می افتین.
مشخصاً برای اینکه حساب و کتاب اعداد نمایش داده شده دستتون باشه باید اونا رو به یه شکلی ذخیره سازی کنین و در هر بار تولید یک عدد تصادفی جدید عدد تولیدی رو با اعداد ذخیره شده تطابق بدین. اگـر عدد تولیدی در بین اعداد ذخیره شده وجود داشت یعنی باید مجدد یک عدد تصادفی تولید یا انتخاب بشه. این ذخیره سازی میتونه توی یک آرایه، متغیر، دیکشنری، تکست و ... اتفاق بیفته. میتونین خیلی ساده توی 4 تا ایونت کار رو جمع کنین و اعداد رو هر دو ثانیه یکبار در یک تکست نمایش بدین.
دقت کنین که لازمه یک متغیر گلوبال از نوع متنی (Text) که در اینجا من نامش رو values انتخاب کردم و یک متغیر گلوبال از نوع عددی (Number) که در اینجا من نامش رو rnd_num قرار دادم حتماً ایجاد بشه.
[تصویر:  3t8ykn]
توی ایونت های بالا یک حلقه از نوع While ایجاد کردیم که پروسه گزینش کاندیدهای جدید رو برای ما تکرار میکنه. کاندیشنی که توی ردیف سوم می بینیم هم در اصل کاندیشن سیستمی Test Regex هست که پارامترهاش به شکل زیر پر شده:
[تصویر:  ug4hz9]
حتماً دقت کنین که همونطور که گفتم بعد از دو ثانیه دهم (20 ثانیه) عملاً کاندید جدیدی برای نمایش وجود نداره و حلقه While تبدیل به یک حلقه بی نهایت میشه که باعث میشه برنامه اصطلاحاً کرش کنه. پس این پروسه رو میتونین نهایتاً ده مرتبه انجام بدین و باید بعد از مرتبه دهم پروسه رو متوقف کنین.
سورس ایونت ها رو میتونین از این لینک دریـافـت کنین.
موفق باشین.
غایب
  پاسخ


 سپاس شده توسط: jaunty051 ، ᔕinaᗪehghani ، mamfan


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 228 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 175 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,586 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: