۰۱-اسفند-۱۳۸۴, ۱۶:۵۴:۳۳
۰۱-اسفند-۱۳۸۴, ۲۰:۵۵:۳۳
veyskarami نوشته است:عمليات Random در کامپیوتر بر چه پایه ای انجام میشه؟سه تا موضوع هست .
اول اينكه خودت مي توني پايش رو انتخاب كني . يعني بگي كه چطوري يه چيز تصادفي توليد بشه .
دوم اينكه بري و مدار منطقي الكترونيكيش رو ياد بگيري كه خيلي هم سادس.
چهارم . اينكه خودت رو راضي كني . رندم واقعا يك تابع تصادفي نيست و بر اساس كسري از زمان توليد ميشه .
به هر حال فرقي نمي كنه . چون همشون يه چيز تصادفي به ما ميدن .
اول نوع تابع Random رو مشخص کن بعد همه چیز رو خودت می فهمی .
مثلا Randomize چه چیزی ؟؟
ولی اون سه مورد بالا اصول بیشتر توابع رندم هستش. :wink:
۰۲-اسفند-۱۳۸۴, ۰۹:۴۹:۳۷
مثل اينكه منظورم رو خوب توضيح ندادم.
ببين من مي خوام بدونم وقتي كه از دستور رندوم استفاده مي كني كامپيوتر چه جوري يه عدد تصادفي بهت مي ده يه اصولي داره ديگه آدم كه نيست يه عدد يا ... رو شناسي بهت بگه بر پايه يه اصولي اين كار رو مي كنه مي خوام بدونم چه چيزي باعث ميشه كه اين اتفاق بيفته
نمي دونم خوب توضيح دادم يا نه :roll:
ببين من مي خوام بدونم وقتي كه از دستور رندوم استفاده مي كني كامپيوتر چه جوري يه عدد تصادفي بهت مي ده يه اصولي داره ديگه آدم كه نيست يه عدد يا ... رو شناسي بهت بگه بر پايه يه اصولي اين كار رو مي كنه مي خوام بدونم چه چيزي باعث ميشه كه اين اتفاق بيفته
نمي دونم خوب توضيح دادم يا نه :roll:
۰۲-اسفند-۱۳۸۴, ۱۰:۱۱:۳۵
veyskarami نوشته است:مثل اينكه منظورم رو خوب توضيح ندادم.
ببين من مي خوام بدونم وقتي كه از دستور رندوم استفاده مي كني كامپيوتر چه جوري يه عدد تصادفي بهت مي ده يه اصولي داره ديگه آدم كه نيست يه عدد يا ... رو شناسي بهت بگه بر پايه يه اصولي اين كار رو مي كنه مي خوام بدونم چه چيزي باعث ميشه كه اين اتفاق بيفته
نمي دونم خوب توضيح دادم يا نه :roll:
بابا خوب من كه بهت همين رو توضيح دادم.
قبول داري سرعت ماشين از انسان بيشتره يا نه ؟؟
وقتي كه از تابع رندم استفاده مي كنم . مي تونه به صورت عمومي دوتا اتفاق بيفته .
يكي از مدار مجتمع منطقي (مجموعي از گيت ها) استفاده كنيم .
كه اين مدار هرچي بخواي برات عدد در مبناي دو ايجاد مي كنه . كه اصلا دست من تو نيست .
و با كنار هم گذاشتنشون مثل (01011011101100) به مبناي كه دلمون مي خواد مي بريم.
و يا اينكه بيام و از زمان براي ايجاد يك عدد تصادفي استفاده كنيم . كه در اين صورت هرچه زمانسنج دقيق تر باشه . عدد تصادفيمون هم تصادفي تره
فكر كنم ساده ترين مداري كه توي الكترونيك براي توليد يه چيز تصادفي باشه فيلپ فلاپه :arrow:
۰۲-اسفند-۱۳۸۴, ۱۰:۳۰:۲۰
ويبي رو تا اونجا كه مي دونم از يه جدول استفاده مي كنه يعني يه جدول تصادفي داره كه اول از زمان براي انتخاب اولين عدد استفاده مي كنه بعد از اين عدد به دست اومده براي انتخاب عدد دوم استفاده مي كنه و همين طور الي آخر
البته مي توني در ابتدا از زمان استفاده نكني كه اعدادت تكراري مي شن
چون از يه جدولن ديگه اگه ديده باشي تابع RND يه عدد هم مي گيره كه از همون عدد براي انتخاب از تو جدول استفاده مي كنه اگه ندي از عدد قبلي استفاده مي كنه البته اگه اشتباه نفهميده باشم
البته مي توني در ابتدا از زمان استفاده نكني كه اعدادت تكراري مي شن

۰۱-فروردین-۱۳۸۵, ۱۶:۲۵:۵۶
من شنیدم از روی ساعت دقیق سیستم این کار رو میکنه(صدم یا هزارم ثانیه رو هم در نظر میگیره)
۰۱-فروردین-۱۳۸۵, ۱۸:۳۵:۳۲
به نظر من از یک فرمول ریاضی استفاده میکنه .
نمیدونم با زمان چه جوری میشه اینکارو کرد ولی آخه یه کمی عجیب
به نظر میرسه فرض کنید ما میخواهیم یک عدد بین 50 و 1 به ما بدهد
یک بار عدد 27 و دفعه دیگر به ما 2 را بدهد . دوستان گفته بودند با صدم
ثانیه ولی وقتی فکر میکنم توی اعداد بزرگ عملیات کسر چه جوری انجام
میشه .
روی چه حسابی نمیدونم .
ولی هر کی پا باهاش میتونم تو شبیه سازی اون فرمول ریاضی با هم
همکاری کنیم. اون یه کمی کمتر عجیبه .
نمیدونم با زمان چه جوری میشه اینکارو کرد ولی آخه یه کمی عجیب
به نظر میرسه فرض کنید ما میخواهیم یک عدد بین 50 و 1 به ما بدهد
یک بار عدد 27 و دفعه دیگر به ما 2 را بدهد . دوستان گفته بودند با صدم
ثانیه ولی وقتی فکر میکنم توی اعداد بزرگ عملیات کسر چه جوری انجام
میشه .
روی چه حسابی نمیدونم .
ولی هر کی پا باهاش میتونم تو شبیه سازی اون فرمول ریاضی با هم
همکاری کنیم. اون یه کمی کمتر عجیبه .
۰۲-فروردین-۱۳۸۵, ۱۶:۰۲:۴۴
تاحالا فکر کردین تابع Rnd عدد تصادفی رو از کجا می یاره ؟؟؟ یه کم فکر کنین ... کامپیوتر که عقل و قدرت انتخاب نداره به ظاهر باید یه عدد دلخواه تولید کنه...
تابع Rnd حتما باید یه عدد به صورت ورودی داشته باشه . به اون عدد seed میگن . وقتی سید رو می گیره می یاد مثلا اون رو در ۳ ضرب میکنه و ... و هزار تا کار روش انجام میده و بعد اونو به عنوان عدد تصادفی به شما میده .
وقتی شما می زنین Randomize Timer تعداد ثانیه های گذشته از نیمه شب به عنوان سید به تابع ارسال میشه ...
اما اینکه واقعا چه طوری سید به یه عدد تصادفی تبدیل میشه ممکنه متفاوت باشه . اما یه راه که هم یه مدت متداول بوده و هم اسونه و هم یه بار سوال مسابقه ای-سی-ام بوده اینه :
The algorithm to generate a sequence of integers, where each integer is between 0 and
B . 1 inclusive, is as follows:
1. Start with any number (the seed) in base B. This number can contain hundreds of base
B digits.
2. The last digit (least significant) is output as the next element of the sequence.
3. Create a new number by writing down the sum of all neighbouring digits from left to
right. E.g., with B = 10, the number 845 would yield the number 129 (since 8 + 4 = 12
and 4 + 5 = 9).
4. Repeat steps 2 and 3 as many times as needed, or until the number has only one base
B digit. You get one more pseudo-random digit between 0 and B . 1 each time.
If we have B = 10 and the seed number is 845, then the next numbers will be 129, 311
(1 + 2 = 3, 2 + 9 = 11), 42 (3 + 1 = 4, 1 + 1 = 2), and 6 (4 + 2 = 6). As 6 is a single digit base
10 number, the algorithm terminates. The pseudo-random digits generated are 5, 9, 1, 2 and
البته اين مطالب من نيست بلكه مطالب آقا امينه
تابع Rnd حتما باید یه عدد به صورت ورودی داشته باشه . به اون عدد seed میگن . وقتی سید رو می گیره می یاد مثلا اون رو در ۳ ضرب میکنه و ... و هزار تا کار روش انجام میده و بعد اونو به عنوان عدد تصادفی به شما میده .
وقتی شما می زنین Randomize Timer تعداد ثانیه های گذشته از نیمه شب به عنوان سید به تابع ارسال میشه ...
اما اینکه واقعا چه طوری سید به یه عدد تصادفی تبدیل میشه ممکنه متفاوت باشه . اما یه راه که هم یه مدت متداول بوده و هم اسونه و هم یه بار سوال مسابقه ای-سی-ام بوده اینه :
The algorithm to generate a sequence of integers, where each integer is between 0 and
B . 1 inclusive, is as follows:
1. Start with any number (the seed) in base B. This number can contain hundreds of base
B digits.
2. The last digit (least significant) is output as the next element of the sequence.
3. Create a new number by writing down the sum of all neighbouring digits from left to
right. E.g., with B = 10, the number 845 would yield the number 129 (since 8 + 4 = 12
and 4 + 5 = 9).
4. Repeat steps 2 and 3 as many times as needed, or until the number has only one base
B digit. You get one more pseudo-random digit between 0 and B . 1 each time.
If we have B = 10 and the seed number is 845, then the next numbers will be 129, 311
(1 + 2 = 3, 2 + 9 = 11), 42 (3 + 1 = 4, 1 + 1 = 2), and 6 (4 + 2 = 6). As 6 is a single digit base
10 number, the algorithm terminates. The pseudo-random digits generated are 5, 9, 1, 2 and
البته اين مطالب من نيست بلكه مطالب آقا امينه
۰۲-فروردین-۱۳۸۵, ۱۶:۳۲:۴۹
الگوريتم هايي براي توليد دنباله اعداد تصادفي هستند كه
BBS مورد مناسبيه . و امن تر از بقيه هم هست
البته Pseudo Random نه Random.
ويليام استالينگ در كتاب معروف خودش , در مورد BBS اينطور ميگه :
It has perhaps the strongest public proof of it's cryptographic strength.
ضمنا BBS مخفف اين عبارته : Blum.Blum.Shub
البته الگوريتم هاي ديگري هم هستند كه پياده سازيشون نسبت به اين خيلي راحتره .
مثل الگوريتم Lehmer يا اسم رسميش : Linear Congruential Method
BBS مورد مناسبيه . و امن تر از بقيه هم هست
البته Pseudo Random نه Random.
ويليام استالينگ در كتاب معروف خودش , در مورد BBS اينطور ميگه :
It has perhaps the strongest public proof of it's cryptographic strength.
ضمنا BBS مخفف اين عبارته : Blum.Blum.Shub
البته الگوريتم هاي ديگري هم هستند كه پياده سازيشون نسبت به اين خيلي راحتره .
مثل الگوريتم Lehmer يا اسم رسميش : Linear Congruential Method