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