View Full Version : ساخت یک عدد تصادفی بدون تکرار
parniaznet
چهارشنبه 26 فروردین 1394, 23:13 عصر
سلام
وقت بخیر
فرض کنید بین 1 تا 20 بخوایم رندوم عدد بگیریم و البته تکراری هم نداشته باشه و این پروسه رو برای 20 بار انجام بدیم و در نهایت بگیم شماره ها تموم شد، برای ساخت یک عدد رندوم بدون تکرار باید چه کدی نوشت؟
من برای ساخت عدد رندوم از کد زیر استفاده می کنم اما این کد تکراری هم میده :
Random rand = new Random();
int i1 = rand.nextInt((max - min) + 1) + min;
golbafan
پنج شنبه 27 فروردین 1394, 09:10 صبح
شما باید از آرایه 20 تایی از یک تا بیست استفاده کنید و رِنج رندم شما هم باید تعداد آرایه باشه
حالا هر عددی که درومد رو باید از آرایه حذف کنید و طول آرایه شما یکی کم بشه
مثال:
ایجاد لیست:
int max = prjcts.size();
List<int> indices = new ArrayList<int>(max);
for(int c = 0; c < max; ++c)
{
indices.add(c);
}
ایجاد رندم:
int arrIndex = (int)((double)indices.size() * Math.random());
int randomIndex = indices.get(arrIndex);
indices.remove(arrIndex);
alireza142
پنج شنبه 27 فروردین 1394, 09:41 صبح
سلام
شما می تونید یک آرایه عددی (مثلا به نام myList) که شامل اون 20 عدد باشه درست کنید. بعد به تابع رندم بگید تعداد عناصر آرایه (myList) را بگیره و یک عدد بده. بعد این عدد میشه ایندکس عدد انتخابی از همون آرایه (myList) . حالا با کد نویس این عدد رو از آرایه حذف کنید.
//ساخت آرایه
ArrayList<int> myList = new ArrayList<int>();
//پر کردن آرایه
for (int i = 1; i < 21 ; i++) {
myList.add(i);
}
//انتخاب عدد تصادفی بین 0 و اندازه طول آرایه
int i = new Random().nextInt(myList.size());
//تعیین عدد انتخاب شده
int shansi = myList.get(i);
//حذف عدد انتخاب شده از آرایه برای جلو گیری از تکرار
myList.remove(shansi);
فقط میتونی یک شرط هم بزاری که اگه تعداد آرایه ها به 0 رسید دیگه لازم نیست قرعه کشی کنه یا حتی اگه بخای دوباره آرایه رو پر کنه و از اول قرعه دربیاره.
متاسفانه ایکلیپس نداشتم و کد ها رو از خودم نوشتم.امیدوارم درست باشه...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.