ايران ويج

نسخه‌ی کامل: توليداعداد تصادفي
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
یک فقره پست فسیل شده رو از زیر خاک بیرون می کشم با یخ و ترشی:d
اصولا کامپایلر ها از این روش برای ساخت اعداد تصادفی استفاده می کنن
Linear congruential generator
اینم یه مثال ساده ازش
کد:
rand = 1234
------
rand=rand*109
rand=rand+89
rand=rand mod 251
'now use rand
البته روش های بهتری هم هست ولی سنگین هستندBiggrin
Combined Linear Congruential Generator
Cryptographically secure pseudorandom number generator

Monte Carlo method
(۱۳-اردیبهشت-۱۳۸۴, ۱۸:۵۶:۵۰)ha_60 نوشته است: [ -> ]تاييد نميشه Amaze
نقل قول: ميشه مستقيما تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟
اگه 11 عدد تصادفي صحيح بين يك تا 10 توليد كني حتما يكي تكراري خواهد بود و حتي هر 11 عدد هم مي توانند برابر باشند
و اما روش تا اونجا كه من مي دونم از روي تايمر اين عدد توليد ميشد و اگه از اون دستور Randomize استفاده نكني اين اعداد براي اجراي دوم با اجراي اول برابر خواهند بود (البته تو داس ويندوز رو نمي دونم)
هادی جان چرا 11؟ چی میشه که از هر11تا حداقل یک تصادفی هست؟
(۳۱-فروردین-۱۳۹۲, ۱۶:۳۲:۱۱)Ghoghnus نوشته است: [ -> ]
(۱۳-اردیبهشت-۱۳۸۴, ۱۸:۵۶:۵۰)ha_60 نوشته است: [ -> ]تاييد نميشه Amaze
نقل قول: ميشه مستقيما تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟
اگه 11 عدد تصادفي صحيح بين يك تا 10 توليد كني حتما يكي تكراري خواهد بود و حتي هر 11 عدد هم مي توانند برابر باشند
و اما روش تا اونجا كه من مي دونم از روي تايمر اين عدد توليد ميشد و اگه از اون دستور Randomize استفاده نكني اين اعداد براي اجراي دوم با اجراي اول برابر خواهند بود (البته تو داس ويندوز رو نمي دونم)
هادی جان چرا 11؟ چی میشه که از هر11تا حداقل یک تصادفی هست؟
اصلا گور باباي كامپيوتر و كامپايلر و تابع RND!!
شما يك كاغذ و خودكار بردار از بين اعداد صحيح 1 تا 10 ،‌يازده تا عدد بنويس بعد بشمار ببين چندتاش تكراري هست!!
(۰۱-اردیبهشت-۱۳۹۲, ۱۵:۴۳:۴۲)Di Di نوشته است: [ -> ]
(۳۱-فروردین-۱۳۹۲, ۱۶:۳۲:۱۱)Ghoghnus نوشته است: [ -> ]
(۱۳-اردیبهشت-۱۳۸۴, ۱۸:۵۶:۵۰)ha_60 نوشته است: [ -> ]تاييد نميشه Amaze
نقل قول: ميشه مستقيما تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟
اگه 11 عدد تصادفي صحيح بين يك تا 10 توليد كني حتما يكي تكراري خواهد بود و حتي هر 11 عدد هم مي توانند برابر باشند
و اما روش تا اونجا كه من مي دونم از روي تايمر اين عدد توليد ميشد و اگه از اون دستور Randomize استفاده نكني اين اعداد براي اجراي دوم با اجراي اول برابر خواهند بود (البته تو داس ويندوز رو نمي دونم)
هادی جان چرا 11؟ چی میشه که از هر11تا حداقل یک تصادفی هست؟
اصلا گور باباي كامپيوتر و كامپايلر و تابع RND!!
شما يك كاغذ و خودكار بردار از بين اعداد صحيح 1 تا 10 ،‌يازده تا عدد بنويس بعد بشمار ببين چندتاش تكراري هست!!
حرف شما درست ولی وقتی دقیق میگه11یعنی این وسط یه اتفاقی میوفته که یازده تا حداقل یکی تکراری هست!اون چیزی که باعث میشه هادی جان دقیقا بگه 11واسم جاله!
(۰۲-اردیبهشت-۱۳۹۲, ۱۴:۳۰:۴۹)Ghoghnus نوشته است: [ -> ]
(۰۱-اردیبهشت-۱۳۹۲, ۱۵:۴۳:۴۲)Di Di نوشته است: [ -> ]
(۳۱-فروردین-۱۳۹۲, ۱۶:۳۲:۱۱)Ghoghnus نوشته است: [ -> ]
(۱۳-اردیبهشت-۱۳۸۴, ۱۸:۵۶:۵۰)ha_60 نوشته است: [ -> ]تاييد نميشه Amaze
نقل قول: ميشه مستقيما تضمين كرد كه هيج عدد تصادفي تكراري توليدنميشه يا خير؟
اگه 11 عدد تصادفي صحيح بين يك تا 10 توليد كني حتما يكي تكراري خواهد بود و حتي هر 11 عدد هم مي توانند برابر باشند
و اما روش تا اونجا كه من مي دونم از روي تايمر اين عدد توليد ميشد و اگه از اون دستور Randomize استفاده نكني اين اعداد براي اجراي دوم با اجراي اول برابر خواهند بود (البته تو داس ويندوز رو نمي دونم)
هادی جان چرا 11؟ چی میشه که از هر11تا حداقل یک تصادفی هست؟
اصلا گور باباي كامپيوتر و كامپايلر و تابع RND!!
شما يك كاغذ و خودكار بردار از بين اعداد صحيح 1 تا 10 ،‌يازده تا عدد بنويس بعد بشمار ببين چندتاش تكراري هست!!
حرف شما درست ولی وقتی دقیق میگه11یعنی این وسط یه اتفاقی میوفته که یازده تا حداقل یکی تکراری هست!اون چیزی که باعث میشه هادی جان دقیقا بگه 11واسم جاله!
اصل لانه کبوتر!
هرگاه 11 انتخاب ما بخواهد بین 10 عدد ممکن اتفاق بیوفتد حتما حداقل یکی از انتخاب ها تکراری است
(n لانه و n+1 کبوتر)
با سلام خدمت اونایی ک در ب در دنبال اعداد تصادفی غیر تکراری میگردن Biggrin
خیلی راحته ببینید فرض میکنیم از بین 10 تا 20 پنج تا عدد میخوایم ک تصادفی انتخاب بشن
کافیه اعداد 10 تا 20 رو تو یه لیست قرار بدیم.بعد:
Int((10 * Rnd()) + 1)
عدد بدست اومده مثلا 4. حالا کافیه چهارمین عدد لیست چاپ بشه و البته همون عدد باید از لیست خارج کنین.
بعد باید از اون عدد جلوی rnd یکی کم بشه چون الان لیستمون 9تا عدد داره.یعنی :
Int((9 * Rnd()) + 1)
فکر کنم دیگه توضیح لازم نباشه...
نمیخواین ازم تشکر کنین ؟ Biggrin
(۱۷-اردیبهشت-۱۳۹۲, ۱۴:۱۲:۲۵)mohammad_2012 نوشته است: [ -> ]با سلام خدمت اونایی ک در ب در دنبال اعداد تصادفی غیر تکراری میگردن Biggrin
خیلی راحته ببینید فرض میکنیم از بین 10 تا 20 پنج تا عدد میخوایم ک تصادفی انتخاب بشن
کافیه اعداد 10 تا 20 رو تو یه لیست قرار بدیم.بعد:
Int((10 * Rnd()) + 1)
عدد بدست اومده مثلا 4. حالا کافیه چهارمین عدد لیست چاپ بشه و البته همون عدد باید از لیست خارج کنین.
بعد باید از اون عدد جلوی rnd یکی کم بشه چون الان لیستمون 9تا عدد داره.یعنی :
Int((9 * Rnd()) + 1)
فکر کنم دیگه توضیح لازم نباشه...
نمیخواین ازم تشکر کنین ؟ Biggrin
Amaze
توضیح بیشترBiggrin
ببینین عزیزان دلبندم Biggrin
اول اعداد یا گزینه هاتونو تو یه آرایه یا لیست قرار میدین مثلا 10 تا 20 رو تو لیست گذاشتیم حالا میخوایم از این لیست 5تا تصادفی انتخاب بشن.
حالا با این دستور:
call randomize
a=Int((10 * Rnd()) + 1)
الان یه عدد تصادفی از 1 تا 10 انتخاب میشه ک همون a میشه
فرض میکنیم 3 باشه.حالا باید بهش کد بدی که آیتم شماره 3 رو چاپ کنه و البته از لیست حذفش کنه.
حالا لیستمون 9تا آیتم داره:
a=Int((9 * Rnd()) + 1)
حالا یه عدد از 1 تا 9 انتخاب میشه.مثلا 8.آیتم شماره 8 چاپ بشه و از لیست حذف بشه.حالا لیست 8تا آیتم داره.همین روال رو ادامه میدیم تا 5تا عدد رو بدست بیاریم.از حلقه for اسنفاده کن.
اومدیم باز تکراری داد ! شما میای با گول زدن خودت اینکارو میکنی چون هر باز میای چک میکنی شبیه لیست نباشه عدد شما ! این نمیشه فرمول این میشه Back dor فکر کنم دوستان دنبال یه الگریتمن تا یه arraye که بخوای دستکاری کنی !؟
(۲۱-اردیبهشت-۱۳۹۲, ۱۶:۴۶:۵۰)setroyd نوشته است: [ -> ]اومدیم باز تکراری داد !

تمام الگوریتم‌های تولید عدد تصادفی عدد تکراری میدن بعد از یک مدت!
دوباره سلام.
راه حلی که من دادم تکراری نمیده.به فرض RND به ما 3 بده.آیتم شماره 3 موجود در لیست چاپ میشه و از لیست حذف میشه.حالا اگر RND بازم 3 داد ؛ دیگه آیتم شماره 3 موجود در لیست اون عدد قبلی نیست چون آیتم شماره 3 پاک شده و یه عدد دیگه جایگزین شده.تست کن تا متوجه منظورم بشی
صفحه‌ها: 1 2 3