انتخاب تصادفی با مشخص کردن احتمال انتخاب؟؟!

karevan

Member
سلام
یه سوال؟!
میخوایم بین عدد یا گزینه ی 1 و 2 یکی رو به صورت تصادفی انتخاب کنیم.
به این صورت که احتمال انتخاب گزینه 1 ، 20% و گزینه 2 ، 80% باشه.
ممنون میشم اگه کسی راهی پیشنهاد کنه.
 

sunrise

Member
اگه اين فقط بين دو عدد هست مي تونيد از اين کد استفاده کنيد (البته من رياضيم زياد خوب نيست، خصوصا احتمال رو هميشه مشکل داشتم :D)
PHP:
if (rand(10, 80) > 20)
{
	echo '80% - YES';
}
else
{
	echo '20% - NO';
}
البته من تو درس آمار و احتمالات که داشتم تابحال چنين سؤالي رو نديده بودم که بين دو گزينه چنين احتمال درصدي وجود داشته باشه، چون وقتي حرف از تصادفي پيش مياد خب حدس زدن اينکه مثلا چند درصد ميشه کمي دشوار هست ولي خب اين کدي که نوشتم رو تست زدم تقريبا بيشتر 80% رو جواب ميده.
 

sunrise

Member
ممنون
ولی یه سوال
چرا مقدار فانکشن rand رو 10 و 80 دادی؟!
بخاطر اينکه 80 درصد مواقع بايد جواب صحيح باشه و فقط 20 درصد نادرست، اگه ميخواستيم از 20 تا 80 بگيريم، اون موقع شايد هيچوقت احتمال اينکه 20 درصد اتفاق بيفته وجود نداشت، چون در اون صورت بايد حتما عدد 20 ظاهر ميشد که اين اصلا خوب نيست، به همين خاطر 10 واحد کمتر گرفته شده تا اين احتمال درست در بياد، البته چون اسمش احتمال هست نميشه واقعا هميشه حدس زد که الان ممکنه اون 20% اتفاق بيفته يا 80% ولي با اين حال، اين کدي که نوشتم تا حدودي اون چيزي که شما ميخواين رو برآورده ميکنه. شايد مثلا الان که تست کنيد شانس با اون 20% باشه و اون به اجرا در بياد اما اگه بعد از اون 4 بار ديگه اين کار رو بکنيد احتمال اينکه عدد بيشتر از 20 باشه به مراتب بيشتر خواهد بود، چرا که گستره وسيعتري رو شامل ميشه، اما با اين حال بازم ميگم نميشه دقيق اين توازن رو برقرار کرد.
 

Masoud1365

مدیر انجمن
فکر کنم با آرایه هم بشه این کارو کرد که مثلا آرایه 5 تا مقدار داره یکیش 1 هست و 4 تای دیگه 2 و با استفاده از تایع shuffl
( اگه اسپلشو درست نوشته باشم :d ) یکی رو تصادفی اناب کنه . بعدش احتمال انتخاب 2 80% و انتخاب 1 20% هست :D
 

parsiteam

Member
سلام . دقیقا همون چیزی رو که میخواین ( یک کلاس php + حتی دستور جاوااسکریپت ) براتون پیوست کردم . موفق باشی عزیزم .
 

پیوست ها

  • Advance Randomizer.zip
    5.4 کیلوبایت · بازدیدها: 3

جدیدترین ارسال ها

بالا