نمایش نتایج 1 تا 9 از 9

نام تاپیک: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه خاص

  1. #1

    Exclamation پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه خاص

    سلام دوستان من یه آرایه دارم و میخوام تو خونه هاش اعداد تصادفی صحیح بین 0 تا 9 رو جای گذاری کنم...میخواستم بپرسم چطوری میتونم این کارو انجام بدم؟
    کد زیر رو امتحان کردم ولی کل آرایه یک عدد تکراری میگیره....

    for (int i = 0; i < 3; i++)
    {
    Random rnd = new Random();
    int temp = 0;
    temp = rnd.Next(0, 9);
    page[i] = temp;
    }


    همچنین از تابع زیر استفاده کردم ولی ارور میده که ارورشو زیر بهتون میگم...
    IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
    {
    List<int> candidates = new List<int>();
    for (int i = minInclusive; i <= maxInclusive; i++)
    {
    candidates.Add(i);
    }
    Random rnd = new Random();
    while (candidates.Count > 1)
    {
    int index = rnd.Next(candidates.Count);
    yield return candidates[index];
    candidates.RemoveAt(index);
    }
    }

    به این صورت استفاده کردم ازش :
    for (int i = 0; i < 3; i++)
    {
    page[i] = UniqueRandom(0, 9);
    }


    ارور هم اینه :

    Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<int>' to 'int'


    نمیدونم چطوری باید به int تبدیلش کنم...
    در ضمن اینم بگم که فضای نام :
    using System.Collections.Generic;

    هم اضافه کردم...مرسی

  2. #2
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    سلام
    دوست عزیز از اون تابع به شکل زیر استفاده کنید:
                int[] page;
    page = UniqueRandom(0, 9).ToArray<int>();

  3. #3

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    نقل قول نوشته شده توسط Farid.N مشاهده تاپیک
    سلام
    دوست عزیز از اون تابع به شکل زیر استفاده کنید:
                int[] page;
    page = UniqueRandom(0, 9).ToArray<int>();
    مرسی دوست عزیز مشکلم حل شد...

  4. #4

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
    {
    List<int> candidates = new List<int>();
    for (int i = minInclusive; i <= maxInclusive; i++)
    {
    candidates.Add(i);
    }
    Random rnd = new Random();
    while (candidates.Count > 1)
    {
    int index = rnd.Next(candidates.Count);
    yield return candidates[index];
    candidates.RemoveAt(index);
    }
    }



    دوستان میخواستم یک توضیح خلاصه در مورد خط به خط تابع بالا بهم بدید...یعنی هر خط چه کاری انجام میده؟ مرسی

  5. #5

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    دوستان اگه این تابع رو
     IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
    {
    List<int> candidates = new List<int>();
    for (int i = minInclusive; i <= maxInclusive; i++)
    {
    candidates.Add(i);
    }
    Random rnd = new Random();
    while (candidates.Count > 1)
    {
    int index = rnd.Next(candidates.Count);
    yield return candidates[index];
    candidates.RemoveAt(index);
    }
    }


    به این صورت به کار ببرم :
    int[] page = UniqueRandom(0,9).Take(arraysize).ToArray();

    فقط یه آرایه ی 9 خانه ای رو میتونه درست کنه که تموم خونه هاش از 0 تا 9 به صورت رندوم مقدار گرفتند و همشون هم منحصر به فرده...من میخوام آرایم رو مثلا با طول 100، مقدار رندوم از 0 تا 9 بدم که همه ی خونه ها فقط یک عدد نگیرند و کاملا تکراری نباشند...چطوری میتونم این کارو انجام بدم؟

  6. #6

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    ببخشید میشه این کد رو از خط اول برای من توضیح بدین
    چون من هم نیاز به یک ماتریس تصادفی دارم
    خواهش می کنم

  7. #7
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    من برای اینکار دو تا تابع زیر رو نوشتم ، برای اینکه خوانایی کد بیشتر بشه کل کار رو به دو تابع تقسیم کردم براتون میزارم شاید به کارتون بیاد :

    void creating_rand_number(int[] i_array, int low, int high)
    {
    if (high - low < i_array.Length)
    {
    throw new ApplicationException("Range Of Number Must be More Than The Length Of Array");
    }
    else
    {
    bool flag = false;
    int rand_number;
    Random i_rand = new Random();
    for (int counter = 0; counter < i_array.Length; counter++)
    {
    rand_number = i_rand.Next(low, high);
    flag = exist_ch(i_array, rand_number, counter);
    while (flag)
    {
    rand_number = i_rand.Next(low, high);
    flag = exist_ch(i_array, rand_number, counter);
    }//end while
    i_array[counter] = rand_number;
    }
    }
    }//End function


    bool exist_ch(int[] i_array, int random_number, int max_index)
    {
    bool flag = false;
    for (int counter = 0; counter < max_index; counter++)
    {
    if (i_array[counter] == random_number)
    returntrue;
    }
    return flag;
    }//End function
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 17 تیر 1395 در 16:01 عصر

  8. #8

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    سلام

    پر کردن آرایه n خانه ای با اعداد تصادفی 1 تا m به طور یکتا:

    Random rnd = new Random();

    for(i=0;i<n;i++)
    {
    k=rnd.Next(1,m+1);
    //Must be unique
    while(Arr.Contains(k))
    k=rnd.Next(1,m+1);

    Arr[i]=k;
    }

    نکته) خروجی Random.Next(minValue,maxValue) یک عدد 32 بیتی بزرگتر یا مساوی minValue و کوچکتر از maxValue است؛ یعنی، محدوده اعداد بازگشتی شامل minValue می شود اما شامل maxValue نمی شود. اگر minValue و maxValue برابر باشند minValue بازگشت داده می شود.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 17 تیر 1395 در 16:02 عصر

  9. #9

    نقل قول: پر کردن آرایه با اعداد تصادفی بدون تکرار در سی شارپ در بازه ی خاص

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    سلام

    پر کردن آرایه n خانه ای با اعداد تصادفی 1 تا m به طور یکتا:

    Random rnd = new Random();

    for(i=0;i<n;i++)
    {
    k=rnd.Next(1,m+1);
    //Must be unique
    while(Arr.Contains(k))
    k=rnd.Next(1,m+1);

    Arr[i]=k;
    }

    نکته) خروجی Random.Next(minValue,maxValue) یک عدد 32 بیتی بزرگتر یا مساوی minValue و کوچکتر از maxValue است؛ یعنی، محدوده اعداد بازگشتی شامل minValue می شود اما شامل maxValue نمی شود. اگر minValue و maxValue برابر باشند minValue بازگشت داده می شود.
    ممنون الگوریتمتون کوتاه تر از چیزی بود که من طراحی کردم
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 17 تیر 1395 در 16:04 عصر

تاپیک های مشابه

  1. آموزش: ساخت اعداد تصادفی بدون تکرار با روش GUID
    نوشته شده توسط behrooz69 در بخش VB.NET
    پاسخ: 0
    آخرین پست: پنج شنبه 24 مهر 1393, 15:25 عصر
  2. پر كردن آرايه با for
    نوشته شده توسط javadt در بخش PHP
    پاسخ: 5
    آخرین پست: شنبه 23 مهر 1390, 17:39 عصر
  3. پر كردن آرايه با اعداد Random
    نوشته شده توسط hamedt در بخش C#‎‎
    پاسخ: 7
    آخرین پست: دوشنبه 10 اسفند 1388, 17:28 عصر
  4. اعداد تصادفی بدون تکرار
    نوشته شده توسط red.blue در بخش C#‎‎
    پاسخ: 5
    آخرین پست: پنج شنبه 01 فروردین 1387, 13:39 عصر
  5. تولید یک لیست از اعداد تصادفی بدون تکرار
    نوشته شده توسط amir1385 در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 28 آذر 1385, 19:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •