PDA

View Full Version : سوال: الگوریتم ساخت اعداد با تمام احتمالات



loo30fer
دوشنبه 02 آبان 1390, 16:52 عصر
سلام خدمت دوستان
میخواستم اعداد با تمامی احتمالاتش تولید کنم برای مثال میخوام به طول 4 تا از 0 تا 9 با تمامی احتمالات موجود تولید کنم و همینطور تعداد احتمالات رو بدست آورد آیا قبلا کسی این الگوریتم رو نوشته اگه نه ممنون میشم در این مورد راهنمایی کنید تا الگوریتمش رو بنویسم ؟
البته در مورد بدست آوردن تعداد احتمالات برای مثال نمونه بالا که طولش 4 و تعداد کارکترها 10 هست بدین شکل نوشتم آیا درسته ؟
طول کارکتر ضربدر طول کارکتر ضربدر تعداد کارکتر که برای مثال بالا میشه بدین شکل :


4*4*10=160

quiet_programmer
دوشنبه 02 آبان 1390, 18:07 عصر
با سلام.

احتمال چی رو میخواین بدست بیارین؟ احتمال تولید یک عدد چهار رقمی؟!!!!
اگه منظورتون کل تعداد اعدادی که میشه به اعداد 0 تا 9 و عدد چهار رقمی تولید کرده باید بگم میتونین از روش جعبه استفاده کنید که میشه:
10*10*10*9=9000
که اینجوری حساب میشه که در مکان یکان ده تا عدد میشه نوشت در مکان دهگان و صدگان هم همینطور و در مکان هزارگان 9تا(صفر قابل قبول نیست.چون باگذاشتن صفر در این مکان عدد سه رقمی میشه).
حالا میشه گفت که احتمال اینکه مثلا عدد زوج تولید بشه چنده.که حالت مطلوب (تعداد اعداد زوجی که با اعداد 0 تا 9 و چهار رقمی میشه تولید کرد) رو بر 9000تقسیم میکنیم. تازه میشه احتمال.امیدوارم منظورمو تونسته باشم برسونم.

در هر حال سوالتون به نظر بنده گنگ بود و نگرفتم که دقیقا چی میخواین.
یاحق.
موفق باشید

loo30fer
دوشنبه 02 آبان 1390, 20:45 عصر
ممنون دوست عزیز بابت توضیحاتتون منظور بنده رو شما به درستی متوجه شدین فقط چیزی که میمونه چون مقداری که من مد نظرم هست رشته ای هست 0 هم برام حساب میشه.
حالا اگه بخوام با داده هایی که دارم که همینطور که گفتم 0 تا 9 هست و به طول 4 رقم با همه احتمالات کارکتر تولید کنم مانند کارکتر A و B به طول 2 که همه احتمالاتش میشه :

AA-AB-BB-BA
باید به چه شکل عمل کنم اگه امکان داره یک الگوریتم برای نمونه قرار بدین یا بنده رو راهنمایی کنید ممنون.

quiet_programmer
سه شنبه 03 آبان 1390, 00:53 صبح
همه احتمالات کارکتر تولید کنم

این جملت اشتباست. باید بگی ترکیب یا جایگشت. این الگوریتم به الگوریتم perm معروفه و میتونی تو کتاب ساختمان داده یا طراحی الگوریتم پیداش کنی. الگوریت زیر یه روش حل ازجایگشته که به صورت بازگشتی پیاده سازی شده:

void perm(char *list,int i,int n)
{
int j,temp;
if(i==n)
{
for(j=0;j<=n;j++)
cout<<list[j];
cout<<endl;
}
else
{
for(j=i;j<=n;j++)
{
SWAP(list[i],list[j],temp);
perm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}

نحوه فراخوانی هم به صورت:

perm(list,0,n-1);

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