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

نام تاپیک: جلوگیری از تکرار اعداد در رندوم

  1. #1

    جلوگیری از تکرار اعداد در رندوم

    سلام؛

    در ویندوزفرم چطور می تونم از تکرار اعداد جلوگیری کنم؟!
    مثلا میان اعداد 1 تا 100 هر عدد انتخاب شد در دور بعد حذف شود.
    یعنی اگر 55 انتخاب شد، انتخاب عدد بین 1تا 54 و 56 تا 100 باشد.
    در دور بعد اگر 10 انتخاب شد، دور بعد اعداد بین 1تا9، 11تا 54 و 56 تا 100 باشد.
    به همین منوال تا آخرین عدد.
    با تشکر
    آخرین ویرایش به وسیله kolibri : یک شنبه 08 شهریور 1394 در 20:48 عصر

  2. #2

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    با تولید هر عدد جدید آنرا در یک آرایه جستجو کنید اگر وجود نداشت آنرا به آرایه اضافه کنید و سپس عدد بعدی را تولید کنید و دوبار در آرایه جستجو اگر وجود نداشت اضافه کنید اگر وجود داشت دوباره عدد جدید ت،لید کنید والی آخر

  3. #3

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    سلام
    ابتدا آرایه مورد نظر را تولید می کنید و سپس به صورت رندوم آرایه را به هم می ریزید که تابع Shuffle که نوشتم کارش همینه
    اوردرش هم( O(n می شه

    public static class RandomShuffle
    {
    private static void Swap<T>(this IList<T> input, int ilhs, int irhs)
    {
    T temp;
    temp = input[ilhs];
    input[ilhs] = input[irhs];
    input[irhs] = temp;
    }

    public static void Shuffle<T>(this IList<T> input)
    {
    Random rnd = new Random();
    for (int i = input.Count; i > 0; i--) {
    input.Swap(rnd.Next(0, i), i - 1);
    }
    }
    }

    نحوه استفاده

    var arr = new int[]{1,2,3,4};
    arr.Shuffle();
    foreach (var element in arr) {
    MessageBox.Show(element.ToString());
    }

  4. #4

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    عالیه است
    الگوریتم دوستمون در پست بالا بهتر و منطقی تر و جالب تر است

  5. #5
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    40
    پست
    1,237

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    در vb.net تابعی وجود داره به اسم Randomize که تضمین میکنه اعداد تصادفی تکراری نباشن
    اما در C#‎ متاسفانه این تابع وجود نداره..
    msdn روش زیر رو بجای Randomize پیشنهاد میکنه....

      Random r = new Random();
    this.label1.Text = r.Next(1, 100).ToString();

  6. #6

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    نقل قول نوشته شده توسط shahryari مشاهده تاپیک
    در vb.net تابعی وجود داره به اسم Randomize که تضمین میکنه اعداد تصادفی تکراری نباشن
    اما در C#‎ متاسفانه این تابع وجود نداره..
    msdn روش زیر رو بجای Randomize پیشنهاد میکنه....

      Random r = new Random();
    this.label1.Text = r.Next(1, 100).ToString();
    دوست عزیز Randomize اصلا تضمین نمی کنه اعداد تکراری نباشه و کارش دقیقا مثل() Random r = new Random هست

  7. #7

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    هدف از ساخت این قسمت این بود که برنامه تصویر پس زمینه تکراری انتخاب نکند، و در صورت پایان یک پیام نمایش دهد.
    من این رو نوشتم:

            private void changePic()        {

    ImageBrush myBrush = new ImageBrush();
    myBrush.ImageSource =
    new BitmapImage(new Uri(url, UriKind.Absolute));
    gridon.Background = myBrush;
    }

    private void changeUrl()
    {

    Random randumurl = new Random();
    //gereften adad beyn 1 ta 25:
    int numPic = randumurl.Next(1, 26);


    //jostojo baraye tekrari nabodan:
    int elementsearch = Array.BinarySearch(j, numPic);




    if (elementsearch != -1)
    {




    changeUrl();


    }
    else
    {
    j[numPic] = numPic;
    url = "ms-appx:///Assets/Picture/" + numPic + ".jpg";
    changePic();
    }




    }




    ولی بهم اخطار گیر کردن در حلقه بی نهایت رو میده!
    در جایی که مجدد متد changeUrl رو فراخوانی می کنم(از درون خودش)

  8. #8

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    سلام
    ای کاش یه تاپیک چدید ایجاد می کردید
    ضمن اینکه برنامه هم چند جا اصلاح کردم لازمه تمرین بیشتر داشته باشید:

    private ImageBrush changePic(string url) {
    ImageBrush myBrush = new ImageBrush();
    myBrush.ImageSource =
    new BitmapImage(new Uri(url, UriKind.Absolute));
    return myBrush;
    }

    با استفاده از کلاس RandomShuffle که در بالا گذاشتم می تونید اعداد رندوم غیر تکراری ایجاد کنید

    var numPic = Enumerable.Range(1, 26).ToArray();
    numPic.Shuffle();
    foreach(var pic in numPic){
    string url = "ms-appx:///Assets/Picture/" + pic + ".jpg";
    gridon.Background = changePic(url);
    }

  9. #9
    کاربر دائمی آواتار ahmadreza.s
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    Visual Studio
    پست
    175

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    سلام به نظرم این قطعه کد ساده تر هست :

    ابتدا یه لیست درست میکنیم :
    public List<int> mylist = new List<int>();


    بعد میایم اینجوری به لیستمون اعداد تصادفی غیر تکراری میدیم :

    for(int i = 1; i < 100; i++)
    {
    Random r = new Random();
    int x;
    while (true)
    {
    x=r.Next(1, 100);
    if (!mylist.Contains(x))
    {
    mylist.Add(x);
    break;
    }
    }



    ----------------------------------

    ببخشید دوستان من سوال رو بد متوجه شدم ، مدیر محترم اگه ممکنه اینو پاک کنید

  10. #10

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    نقل قول نوشته شده توسط ahmadreza.s مشاهده تاپیک
    سلام به نظرم این قطعه کد ساده تر هست :

    ابتدا یه لیست درست میکنیم :
    public List<int> mylist = new List<int>();


    بعد میایم اینجوری به لیستمون اعداد تصادفی غیر تکراری میدیم :

    for(int i = 1; i < 100; i++)
    {
    Random r = new Random();
    int x;
    while (true)
    {
    x=r.Next(1, 100);
    if (!mylist.Contains(x))
    {
    mylist.Add(x);
    listBox1.Items.Add(x);
    break;
    }
    }
    این روشی که شما استفاده می کنید که دوستمون pbm_soy هم اشاره کرد اوردرش به طور متوسط می شه n به توان 2 در حالی که Shuffle اوردرش تنها n می شه همچنین هزینه Contains هم به اون افزوده می شه!
    ضمن اینکه new Random باید خارج از حلقه باشه

  11. #11

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    نقل قول نوشته شده توسط rahnema1 مشاهده تاپیک
    سلام
    ای کاش یه تاپیک چدید ایجاد می کردید
    ضمن اینکه برنامه هم چند جا اصلاح کردم لازمه تمرین بیشتر داشته باشید:

    private ImageBrush changePic(string url) {
    ImageBrush myBrush = new ImageBrush();
    myBrush.ImageSource =
    new BitmapImage(new Uri(url, UriKind.Absolute));
    return myBrush;
    }

    با استفاده از کلاس RandomShuffle که در بالا گذاشتم می تونید اعداد رندوم غیر تکراری ایجاد کنید

    var numPic = Enumerable.Range(1, 26).ToArray();
    numPic.Shuffle();
    foreach(var pic in numPic){
    string url = "ms-appx:///Assets/Picture/" + pic + ".jpg";
    gridon.Background = changePic(url);
    }
    ضمن تشکر بابت راهنمایتون حتما تمرینات بیشتری انجام میدم.
    اگر امکانش هست این خطوط رو توضیح بفرمایید:
    var numPic = Enumerable.Range(1, 26).ToArray();
    numPic.Shuffle();

  12. #12

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    نقل قول نوشته شده توسط kolibri مشاهده تاپیک
    ضمن تشکر بابت راهنمایتون حتما تمرینات بیشتری انجام میدم.
    اگر امکانش هست این خطوط رو توضیح بفرمایید:
    var numPic = Enumerable.Range(1, 26).ToArray();
    numPic.Shuffle();
    اینکه واضحه
    خط اول اعداد 1 تا 26 ایجاد کرده و در آرایه ای به نام numPic ذخیره می کنیم
    توی خط دوم محتوای آرایه را به صورت تصادفی به هم می ریزیم یا به اصطلاح بُر می زنیم
    آخرین ویرایش به وسیله rahnema1 : سه شنبه 10 شهریور 1394 در 13:13 عصر

  13. #13

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    Enumerable برای چیست؟!
    یعنی شما اومدید یک آرایه با اعضای بهم ریخته و یکتا ساختید و سپس یکی یکی فراخوانی کردید؟
    خیلی عالی، اینجور به مسئله نگاه نکرده بودم!! واقعا نیاز به تمرینات زیادی دارم.

  14. #14

    نقل قول: جلوگیری از تکرار اعداد در رندوم

    نقل قول نوشته شده توسط kolibri مشاهده تاپیک
    Enumerable برای چیست؟!
    یعنی شما اومدید یک آرایه با اعضای بهم ریخته و یکتا ساختید و سپس یکی یکی فراخوانی کردید؟
    خیلی عالی، اینجور به مسئله نگاه نکرده بودم!! واقعا نیاز به تمرینات زیادی دارم.
    آفرین دقیقا همین طوره
    Enumerable هم وقتی using System.Linq بذارید قابل استفاده می شه

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

  1. جلوگیری از تکرار در نمایش اطلاعات
    نوشته شده توسط terrorhell در بخش PHP
    پاسخ: 8
    آخرین پست: چهارشنبه 20 آبان 1388, 02:16 صبح
  2. جلوگیری از تکرار و افزایش کارایی
    نوشته شده توسط mamizadeh در بخش SQL Server
    پاسخ: 3
    آخرین پست: دوشنبه 27 اسفند 1386, 12:01 عصر
  3. جلوگیری از تکرار یک رکورد در خروجی (Distinct نیست)
    نوشته شده توسط Neo Persian در بخش SQL Server
    پاسخ: 13
    آخرین پست: پنج شنبه 13 دی 1386, 23:17 عصر
  4. جلوگیری از تکرار در SQL
    نوشته شده توسط Pichidehtarin در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: پنج شنبه 26 شهریور 1383, 12:35 عصر
  5. جلوگیری از تکرار در ComboBox
    نوشته شده توسط Pichidehtarin در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: پنج شنبه 26 شهریور 1383, 09:52 صبح

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

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