ورود

View Full Version : روش تولید اعداد تصادفی در زبانهای برنامه نویسی



ahangha88
سه شنبه 27 اردیبهشت 1390, 20:15 عصر
من مقاله ای میخوام که روشهای تولید اعداد تصادفی در زبان های برنامه نویسی مختلف رو گفته باشه منظورم دستور مثلا random نیست منظورم انواع دستورات رندوم در برنامه نویسی مختلف و روش بدست آوردن عدد تصادفی در این دستورات هست مثلا چطور عدد ابتدایی رو بدست میاره و اعداد بعدی رو چطور بر اساس اون بدست میاره؟ خیلی برام مهمه خواهشا اگه کسی میتونه سریعتر کمک کنه

m.soleimani
سه شنبه 27 اردیبهشت 1390, 20:22 عصر
http://en.wikipedia.org/wiki/Random_number_generation

ahangha88
یک شنبه 01 خرداد 1390, 13:31 عصر
ممنون ولی من فارسی میخوام کسی فارسی رو سراغ نداره؟

nameely
یک شنبه 01 خرداد 1390, 14:36 عصر
خوب شما همون رو روی فارسی کلیک کنی فکر می کنم فارسی میاد

http://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF% D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C

ricky22
یک شنبه 01 خرداد 1390, 14:39 عصر
http://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF% D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C
من دیدم دوست بالایی جواب داده اما نمی تونم پستم رو پاک کنم !

returnx
یک شنبه 01 خرداد 1390, 17:48 عصر
اینم یک تابع تولید اعداد تصادفی که خودمون نوشتیم(من با یکی از کاربران همین سایت که الان یادم نیست کی بود!! ایشون خیلی تو نوشتن این تابع کمکم کرد) ...

Function mrnd(Low As Integer, ByVal high As Integer) As Integer
Dim y As Double 'variable for get Day(now)
Dim s As Integer 'variable for get second(now)
Dim m As Integer 'variable for get minute(now)
Dim h As Integer 'variable for get houre(now)
Dim temp As Double
y = Day(Now)
's = Second(Now)
temp = GetTickCount
s = Right(temp, 1)
m = Minute(Now)
h = Hour(Now)
y = 29 * s * (s + y) + y * (m + s) - 13 * y * -h / 3
mrnd = y Mod (high - Low + 1) + Low
End Function

اول از ثانیه استفاده کردیم برای اینکه اعداد تکراری کمتر بده من از تابع GetTickCount که مقدار روشن بودن سیستم رو بر حسب میلی ثانیه بر میگردونه...

Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

موفق باشید...

ahangha88
سه شنبه 03 خرداد 1390, 10:33 صبح
ممنون از هموتون ولی من میخوام یه مقاله باشه که توضیح داده باشه مثلا در c# چه فرمولی برای محاسبه اعدادم تصادفی در تابع مثلا rand به کار میره یا در زبانها معروف دیگه اینجوری باشه

eshpilen
سه شنبه 03 خرداد 1390, 10:47 صبح
شاید بد نباشه یخورده موضوع رو روشن تر کنیم و ببینیم واقعا دنبال چی هستیم.
مولدهای اعداد تصادفی چند نوع دسته بندی دارن.
یکی از این دسته بندی ها هم به این برمیگرده که اون مولد قابل استفاده در مصارف امنیتی هست یا خیر.
بعضی مولدها اعداد تصادفی ظاهرا خوبی ایجاد میکنن که برای کاربردهای غیرامنیتی مشکلی نداره اما چون با روشهای در دسترس تاحد زیادی قابل پیشبینی یا تاثیر از عوامل کنترل شده هستن برای مصارف امنیتی و بخصوص رمزنگاری بکار نمیرن.
الگوریتم هایی که اعداد تصادفی تولید میکنن بخصوص اونهایی که بخوان از نوع امنیتی و رمزنگاری باشن باید هرچی میتونن از وضعیت منابع غیرقابل پیشبینی و تاحد امکان غیرقابل کنترل خارجی در این امر بهره بگیرن. زمان سیستم فقط یکی از این منابع هست؛ از منابع متعدد دیگری مثل محتوی بافرهای ورودی و خروجی میشه استفاده کرد.
یعنی الگوریتم باید دیتاهایی رو از وضعیت منابعی که حالت رندوم دارن جمع آوری بکنه؛ این یک بخش کاره.
ممکنه شما الگوریتمی ایجاد کنید که ظاهرا اعداد تصادفی خوبی ایجاد میکنه، اما بقدر کافی رندوم یا غیرقابل کنترل از خارج نباشه.
بخش دیگر این الگوریتم ها هم اینه که اون دیتاها رو طوری در فرمول کلی وارد و توزیع و پخش کنن که یک الگوی غیرقابل پیشبینی و یکنواخت از نظر توزیع در اعداد تصادفی تولید شده بوجود بیاد.

returnx
سه شنبه 03 خرداد 1390, 11:10 صبح
ممنون از هموتون ولی من میخوام یه مقاله باشه که توضیح داده باشه مثلا در c# چه فرمولی برای محاسبه اعدادم تصادفی در تابع مثلا rand به کار میره یا در زبانها معروف دیگه اینجوری باشه

البته شما باید به این توجه داشته باشین که تابع random زبان C++ و VB6 کاملا عین هم هستن و الگوریتمشون یکی هست و اگه اشتباه نکنم برای VB.net و C# هم مینطوره یعنی همون تابع random زبان C++ هست...کلا این تابع نسبتا خوب جواب داد برای همین تو اکثر زبان های برنامه نویسی از همین الگوریتم استفاده میشه ، پس نیاز نیست تابع هر زبان را جدا ،جدا بررسی کنید...موفق باشید.../

ztx4
سه شنبه 03 خرداد 1390, 12:18 عصر
شاید خالی از لطف نباشه که ببینم دات نت چه طور اعداد random تولید می کنه:

ahangha88
پنج شنبه 12 خرداد 1390, 17:54 عصر
من از همه ممنونم اما ولی من میخوام بدونم توابع مثلا کوشی یا توابع تولید اعداد تصادفی در بازه 0 تا 1 به چه صورت اعداد رو در این بازه تولید میکنن یا بع عبارتی از چه فرمولی برای اینکار استفاده میکنن؟

returnx
جمعه 13 خرداد 1390, 00:27 صبح
منم که عرض کردم ، با هر تابعی شما میتونید اعداد تصادفی تولید کنید با این شرط که در هر لحظه ورودی شما در حال تغییر باشه به طور مثال تابع زیر رو در نظر بگیرید :
y=x+1*x+1
حالا شما فرض کنید ما بجای X عدد یک رو بزاریم خروجی میشه 4، حالا عدد 3 رو بزاریم خروجی میشه 16!! ما الان دو عدد جدید تو تابمون ایجاد کردیم ...
حالا شما فرض کنید ما بجای X ، ثانیه سیستم رو بزاریم در هر ثانیه یک عدد تصادفی ایجاد میشه...
نتبجه : با هر معادله ریاضی میشه یک تابع تولید اعداد تصادفی ایجاد کرد...
اما برای اینکه اعداد تکراری نباشه مجبوریم از ورودی هایی استفاده کنیم که خیلی سریع تغییر می کنند مثل زمان سیستم بر حسب میلی ثانیه و یا استفاده از عدد تولید شده ی قبلی ...
با اون تابعی که من براتون گذاشتم میتونید در یک بازه مشخص اعداد تصادفی ایجاد کنید...
کلا در این زمینه نمیتونید مقاله فارسی پیدا کنید ، احتمالا باید خودتون یک مقاله فارسی بنویسید...