الگوریتم ساخت اعداد با تمام احتمالات
سلام خدمت دوستان
میخواستم اعداد با تمامی احتمالاتش تولید کنم برای مثال میخوام به طول 4 تا از 0 تا 9 با تمامی احتمالات موجود تولید کنم و همینطور تعداد احتمالات رو بدست آورد آیا قبلا کسی این الگوریتم رو نوشته اگه نه ممنون میشم در این مورد راهنمایی کنید تا الگوریتمش رو بنویسم ؟
البته در مورد بدست آوردن تعداد احتمالات برای مثال نمونه بالا که طولش 4 و تعداد کارکترها 10 هست بدین شکل نوشتم آیا درسته ؟
طول کارکتر ضربدر طول کارکتر ضربدر تعداد کارکتر که برای مثال بالا میشه بدین شکل :
نقل قول: الگوریتم ساخت اعداد با تمام احتمالات
با سلام.
احتمال چی رو میخواین بدست بیارین؟ احتمال تولید یک عدد چهار رقمی؟!!!!
اگه منظورتون کل تعداد اعدادی که میشه به اعداد 0 تا 9 و عدد چهار رقمی تولید کرده باید بگم میتونین از روش جعبه استفاده کنید که میشه:
10*10*10*9=9000
که اینجوری حساب میشه که در مکان یکان ده تا عدد میشه نوشت در مکان دهگان و صدگان هم همینطور و در مکان هزارگان 9تا(صفر قابل قبول نیست.چون باگذاشتن صفر در این مکان عدد سه رقمی میشه).
حالا میشه گفت که احتمال اینکه مثلا عدد زوج تولید بشه چنده.که حالت مطلوب (تعداد اعداد زوجی که با اعداد 0 تا 9 و چهار رقمی میشه تولید کرد) رو بر 9000تقسیم میکنیم. تازه میشه احتمال.امیدوارم منظورمو تونسته باشم برسونم.
در هر حال سوالتون به نظر بنده گنگ بود و نگرفتم که دقیقا چی میخواین.
یاحق.
موفق باشید
نقل قول: الگوریتم ساخت اعداد با تمام احتمالات
ممنون دوست عزیز بابت توضیحاتتون منظور بنده رو شما به درستی متوجه شدین فقط چیزی که میمونه چون مقداری که من مد نظرم هست رشته ای هست 0 هم برام حساب میشه.
حالا اگه بخوام با داده هایی که دارم که همینطور که گفتم 0 تا 9 هست و به طول 4 رقم با همه احتمالات کارکتر تولید کنم مانند کارکتر A و B به طول 2 که همه احتمالاتش میشه :
AA-AB-BB-BA
باید به چه شکل عمل کنم اگه امکان داره یک الگوریتم برای نمونه قرار بدین یا بنده رو راهنمایی کنید ممنون.
نقل قول: الگوریتم ساخت اعداد با تمام احتمالات
نقل قول:
همه احتمالات کارکتر تولید کنم
این جملت اشتباست. باید بگی ترکیب یا جایگشت. این الگوریتم به الگوریتم 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);
یاحق.
موفق باشید