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

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

  1. #1
    کاربر دائمی آواتار earse+erse
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ساري
    پست
    315

    Post اعداد رندوم كاملا غير تكراري

    اين برنامه رو قبلا ها گذاشته بودن توي فروم اما من لازم دونستم كه تو بخش بازي ها هم باشه چون خيلي نيازه و مرتبط

    همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع Rnd
    اين برنامه به شما كمك مي كنه كه اعداد رندوم كاملا غير تكراري داشته باشين

    اميد وارم اين برنامه شما رو براي ساخت بازي هاي بهتر كمك كنه
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: اعداد رندوم كاملا غير تكراري

    همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع Rnd
    چرا؟ چرا تابع Rnd اعداد تصادفی واقعی تولید نمیکنه؟

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

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

    Repeat:

    Rand_Num = Rnd() * Max
    Rand_Num = Rand_Num + Max '//Go Number larger than max

    Do While (Rand_Num < Min Or Rand_Num > Max)

    Rand_Num = Rand_Num - (Max - Min) '// IF Rand number is out of range , come it in range

    Loop

    If In_Array_X(Result, Rand_Num, i) = False Then '//IF Not exist then push it into array

    Result(i) = Rand_Num

    Else

    GoTo Repeat

    End If


    این دستورات و حلقه ها دقیقاً معادل دستور زیر عمل می کنند:

    Rand_Num = Rnd() * (Max - Min)
    Rand_Num = Rand_Num + Min


    کسی که کد رو نوشته، هدفش fit کردن عدد تولید شده در بازه مشخص شده هست. می بینید که نیازی به اون همه دستور و حلقه نیست. تنها اگر بدونیم تابع Rnd کارش تولید یک عدد تصادفی در بازه 0 و 1 هست، همین کافی‌ست تا به دو خط دستور بالا برسیم.

    موفق باشید/
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  3. #3

  4. #4
    کاربر دائمی آواتار earse+erse
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ساري
    پست
    315

    نقل قول: اعداد رندوم كاملا غير تكراري

    نقل قول نوشته شده توسط xxxxx_xxxxx مشاهده تاپیک
    کسی که کد رو نوشته، هدفش fit کردن عدد تولید شده در بازه مشخص شده هست. می بینید که نیازی به اون همه دستور و حلقه نیست. تنها اگر بدونیم تابع Rnd کارش تولید یک عدد تصادفی در بازه 0 و 1 هست، همین کافی‌ست تا به دو خط دستور بالا برسیم.

    موفق باشید/
    منظور شما رو متوجه نشدم
    يعني اون يارو يي كه كد رو نوشت بيكار بود همون دو خط كافيه
    لطفا اگه ميشه درباره اعداد رندوم بيشتر توضيح بدين

  5. #5
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: اعداد رندوم كاملا غير تكراري

    منظور شما رو متوجه نشدم
    من میگم هدف این برنامه چیز دیگریست. هدف تولید اعداد تصادفی در یک بازه مشخص و غیرتکراری هست و البته همراه با محاسبات اضافی. چون شما به صورت bold شده و بزرگ نوشتید که تو VB نمیشه اعداد تصادفی واقعی تولید کرد حتی با Rnd، ولی من گفتم میشه که اتفاقاً تو همین برنامه هم از همین تابع Rnd استفاده شده.

    يعني اون يارو يي كه كد رو نوشت بيكار بود همون دو خط كافيه
    اون دو خط برای تولید عدد در یک بازه مشخص هست وتکراری بودن اعداد بررسی نمیشه. اما در برنامه ای که گذاشتید یکی از اهدافش غیر تکراری بودن اعداد تولید شده هست که با یک حلقه ساده میشه این بررسی رو انجام داد.

    لطفا اگه ميشه درباره اعداد رندوم بيشتر توضيح بدين
    قبلاً در اینباره گفتگو شده اگر لینکش رو پیدا کردم در همین پست قرار میدم، چیز خاصی نداره، توضیحات بیشتر رو میتونید از MSDN پیدا کنید.

    زماني كه من VB كار مي كردم ابتداي برنامه مي نوشتيم Randomize و rnd بر پايه زمان ساخته مي شد، لذا غير تكراري به دست ميومد!
    بله، کاملاً حق با شماست، اما فرض بر این هست که از Randomize استفاده شده. چون تو برنامه ای که ایشون قرار دادن وجود داره!
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  6. #6
    کاربر دائمی آواتار earse+erse
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ساري
    پست
    315

    Cool نقل قول: اعداد رندوم كاملا غير تكراري

    همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع Rnd
    منظور و هدف من از اين پست استفاده بازي نويس هاي vb بود و براي بازي سازي اعداد رندوم غير تكراري اي لازم داريم كه با باز شدن دوباره برنامه همون اعداد ظاهر نشن كه من اسمش رو گذاشتم اعداد رندوم واقعي
    (با تابع rnd به صورت ساده ، اگه برنامه رو ببنديم و دوباره باز كنيم ، اعداد تكرار ميشن)


    بله من متوجه هستم كه تو همون ضميمه هم از Rnd استفاده شده ولي كار من كه دارم يه بازي طراحي مي كنم همون اعداد رندوم واقعي است

    مرسي/

  7. #7
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: اعداد رندوم كاملا غير تكراري

    خب اعداد Random واقعی رو همون Randomize منجربه تولیدش میشه که در پست سوم بهش اشاره شده.
    در برنامه شما هم Rnd وجود دارد و هم Randomize . پس اعداد کاملاً تصادفی ایجاد میشند.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  8. #8
    کاربر دائمی آواتار earse+erse
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ساري
    پست
    315

    Smile نقل قول: اعداد رندوم كاملا غير تكراري

    نقل قول نوشته شده توسط earse+erse مشاهده تاپیک
    (با تابع rnd به صورت ساده ، اگه برنامه رو ببنديم و دوباره باز كنيم ، اعداد تكرار ميشن)

    نقل قول نوشته شده توسط xxxxx_xxxxx مشاهده تاپیک
    در برنامه شما هم Rnd وجود دارد و هم Randomize . پس اعداد کاملاً تصادفی ایجاد میشند.
    حرف شما كاملا درسته . . . ما هر دو داريم يك حرف ميزنيم ولي فكر مي كنيم كه طرف مقابل يه چيز ديگه ميگه

    بله برنامه من هم Rnd وجود دارد و هم Randomize . پس اعداد کاملاً تصادفی ایجاد میشند و اين رو ضميمه كردم تا دوستان تازه كار بتونن بدون دردسر اعداد تصادفي كاملا غير تكراري ايجاد كنن

برچسب های این تاپیک

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

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