PDA

View Full Version : اعداد رندوم كاملا غير تكراري



earse+erse
شنبه 12 دی 1388, 09:51 صبح
اين برنامه رو قبلا ها گذاشته بودن توي فروم اما من لازم دونستم كه تو بخش بازي ها هم باشه چون خيلي نيازه و مرتبط:قلب:


همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع Rnd :عصبانی:

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

اميد وارم اين برنامه شما رو براي ساخت بازي هاي بهتر كمك كنه:تشویق:

xxxxx_xxxxx
شنبه 12 دی 1388, 11:26 صبح
همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع 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 هست، همین کافی‌ست تا به دو خط دستور بالا برسیم.

موفق باشید/

حامد مصافی
شنبه 12 دی 1388, 12:14 عصر
زماني كه من VB كار مي كردم ابتداي برنامه مي نوشتيم Randomize و rnd بر پايه زمان ساخته مي شد، لذا غير تكراري به دست ميومد!

earse+erse
شنبه 12 دی 1388, 16:04 عصر
کسی که کد رو نوشته، هدفش fit کردن عدد تولید شده در بازه مشخص شده هست. می بینید که نیازی به اون همه دستور و حلقه نیست. تنها اگر بدونیم تابع Rnd کارش تولید یک عدد تصادفی در بازه 0 و 1 هست، همین کافی‌ست تا به دو خط دستور بالا برسیم.

موفق باشید/

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

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



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



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


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

earse+erse
یک شنبه 13 دی 1388, 09:48 صبح
همينطور كه مي دونين تو وي بي نمي تونيم اعداد رندوم واقعي داشته باشيم حتي با تابع Rnd


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


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

مرسي/

xxxxx_xxxxx
یک شنبه 13 دی 1388, 21:31 عصر
خب اعداد Random واقعی رو همون Randomize منجربه تولیدش میشه که در پست سوم بهش اشاره شده.
در برنامه شما هم Rnd وجود دارد و هم Randomize . پس اعداد کاملاً تصادفی ایجاد میشند.

earse+erse
سه شنبه 15 دی 1388, 09:40 صبح
(با تابع rnd به صورت ساده ، اگه برنامه رو ببنديم و دوباره باز كنيم ، اعداد تكرار ميشن)





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

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

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