# Native Code > برنامه نویسی در 6 VB > برنامه نویسی مرتبط با بازی و گرافیک در VB6 >  اعداد رندوم كاملا غير تكراري

## earse+erse

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

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

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

----------


## xxxxx_xxxxx

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

موفق باشید/

----------


## حامد مصافی

زماني كه من VB كار مي كردم ابتداي برنامه مي نوشتيم Randomize و rnd بر پايه زمان ساخته مي شد، لذا غير تكراري به دست ميومد!

----------


## earse+erse

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


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

----------


## xxxxx_xxxxx

> منظور شما رو متوجه نشدم


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




> يعني اون يارو يي كه كد رو نوشت بيكار بود همون دو خط كافيه


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




> لطفا اگه ميشه درباره اعداد رندوم بيشتر توضيح بدين


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




> زماني كه من VB كار مي كردم ابتداي برنامه مي نوشتيم Randomize و rnd بر پايه زمان ساخته مي شد، لذا غير تكراري به دست ميومد!


بله، کاملاً حق با شماست، اما فرض بر این هست که از Randomize استفاده شده. چون تو برنامه ای که ایشون قرار دادن وجود داره!

----------


## earse+erse

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


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


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

مرسي/

----------


## xxxxx_xxxxx

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

----------


## earse+erse

> (با تابع rnd به صورت ساده ، اگه برنامه رو ببنديم و دوباره باز كنيم ، اعداد تكرار ميشن)





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


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

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

----------

