کدهای متلب زیر رو می نویسیم :
نتیجه اجرای کدها :
choosed که در آخر نمایش داده شده است، همان اعداد تصادفی انتخابی می باشد.
تا اینجا، برنامه ای نوشتیم که به صورت تصادفی، تعدادی از اعداد تصادفی رو انتخاب میکنه که مجموعشان، کمتر از 60 باشد. ولی خوب ما نیاز داریم که بهینه ترین پاسخ را به دست آوریم، بنابراین شما از این کدها استفاده کرده آنها را در یک حلقه for قرار بدهید و 1000 حالت ممکن (یا هر تعداد که فکر می کنید مناسب است) را بسازید و بعد از حلقه for ، هر جوابی که به 60 نزدیکتر باشد، همان جواب بهینه است.
کد:
clear all
close all
clc
k=randi([1,95],1,randi([4,20]))
k_size=size(k)
total=0;
sum=60;
k_copy=k;
p=1;
choosed=0;
ieration=0;
while (ieration<1000)
a=1;
b=k_size(2);
random=randi([1,k_size(2)]);
if (k_copy(random)<sum && k_copy(random)~=0)
sum=sum-k_copy(random);
choosed(p)=k_copy(random);
p=p+1;
k_copy(random)=0;
end
ieration=ieration+1;
end
choosed
نتیجه اجرای کدها :
کد:
k =
8 23 12 18 23 40 5 86 90 47
k_size =
1 10
choosed =
23 18 12 5
choosed که در آخر نمایش داده شده است، همان اعداد تصادفی انتخابی می باشد.
تا اینجا، برنامه ای نوشتیم که به صورت تصادفی، تعدادی از اعداد تصادفی رو انتخاب میکنه که مجموعشان، کمتر از 60 باشد. ولی خوب ما نیاز داریم که بهینه ترین پاسخ را به دست آوریم، بنابراین شما از این کدها استفاده کرده آنها را در یک حلقه for قرار بدهید و 1000 حالت ممکن (یا هر تعداد که فکر می کنید مناسب است) را بسازید و بعد از حلقه for ، هر جوابی که به 60 نزدیکتر باشد، همان جواب بهینه است.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.