View Full Version : خاصیت این اعداد در تولید اعداد تصادفی
ehsan_system
شنبه 17 آذر 1386, 14:16 عصر
سلام .
این تابع برای تولید اعداد تصادفیه :
int random(int n)
{
static long seed=1;
seed=3645651*seed+237457;
return seed%n;
}
میخواستم بدونم کسی میدونه خاصیت این دو عدد چیه ؟
emad_67
یک شنبه 18 آذر 1386, 11:48 صبح
seed یه آرگمانی هست که برای تولید اعداد تصادفی استفاده میشه در واقع توی این تابع هم یه مقدار اولیه ای داره و بعد از فراخوانی تابع در این خط:
seed=3645651*seed+237457;
به مقداری جدیدی که از عبارت به دست میاد تغییر میکنه و چون seed به صورت static تعریف شده بار دیگه که تابع فراخوانی میشه دیگه مقدار seed برابر 1 نیست و مقدار جدید رو که از فراخوانی قبلی به دست اومده در خودش داره و به همین ترتیب بعد هم مقدار باقیمونده عدد بر n به دست میاد که یه عدد رندوم میشه. ضرورتی هم در استفاده از دو عدد 3645651 و 237457 فکر نکنم باشه چون فقط برای تولید یه عدد تصادفی هستند و میتونن یه اعداد دیگه ای باشن.
ehsan_system
یک شنبه 18 آذر 1386, 15:40 عصر
ممنون آقا عماد .
اما استاد ما میگفت این اعداد خاصیت خاصی دارند و من تو یه سایت دیگه هم که همین الگوریتم رو نوشته بود ، دیدم از همین اعداد استفاده کرده !!!
ehsan_system
دوشنبه 19 آذر 1386, 09:54 صبح
دوستان ، فکر کنم استادم نکته انحرافی گفته :عصبانی++:
همونطور که آقا عماد گفتند اگه به منطق تابع نگاه کنیم بجای این دو عدد هر عدد دیگه ای میتونه باشه .
بازم از آقا عماد متشکرم .:لبخند:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.