سلام دوستان
من دنباله کددستوراتی میگردم که بشه با مطلب بین عدد صفر و 0/2 با میانگین مشخص اعداد تصادفی تولید کنه یعنی میانگین اعداد تصادفی تولید شده مقداری باشه که ما از قبل داریم.
از کمکتون بینهایت سپاسگذارم
سلام.
میانگین اعداد تصادفی، به طور دقیق برابر یک مقدار باشد، یا اینکه در حدود آن مقدار باشد ؟
مثلا برای بازه 0 تا 0.2 که گفتید، میانگین برابر چه مقداری باشد ؟
(۱۳۹۲/۰۶/۲۳, ۱۰:۴۲ ب.ظ)admin نوشته: [ -> ]سلام.
میانگین اعداد تصادفی، به طور دقیق برابر یک مقدار باشد، یا اینکه در حدود آن مقدار باشد ؟
مثلا برای بازه 0 تا 0.2 که گفتید، میانگین برابر چه مقداری باشد ؟
مدیر عزیز ممنونم میانگین اگر برابر عدد دقیقی باشه بهتره مثلا در بازه مذکور 0/01064 میانگینه مورد نظره من هست باز هم از کمکتون بینهایت ممنونماگر بشه تعداد اعداد رو هم مشخص کرد خیلی عالیه مثلا 30 عدد بین این بازه با میانگینه 0/01064 بده.
سلام.
کدهای متلب :
کد:
clear all
close all
clc
a=0;
b=0.2;
mean=0.01064;
total_number=20;
epsilon=0.000001;
r=a+(b-a).*rand(1,total_number);
difference=sum(sum(r))-(total_number*mean);
finish=0;
while (finish == 0)
if (abs(difference) < epsilon)
finish=1;
end
if (difference > 0)
for nn=1:total_number
if (abs(difference) < epsilon)
finish=1;
% return;
elseif (r(nn) > difference)
r(nn)=r(nn)-difference;
difference=0;
else
c=a;
d=r(nn);
random=c+(d-c).*rand(1);
r(nn)=r(nn)-random;
difference=difference-random;
end
end
end
if (difference < 0)
for nn=1:total_number
if (abs(difference) < epsilon)
finish=1;
% return;
elseif (b-r(nn) > difference)
r(nn)=r(nn)+abs(difference);
difference=0;
else
c=0;
d=b-r(nn);
random=c+(d-c).*rand(1);
r(nn)=r(nn)+random;
difference=difference+random;
end
end
end
end
r
final_mean=sum(sum(r))/total_number;
final_mean=vpa(final_mean)
a و b حدود تولید اعداد تصادفی است. total_number برابر تعداد عناصر بردار و mean همان میانگینی است که می خواهیم به آن برسیم.
epsilon مهم است و بر اساس تعداد ارقام اعشاری مقدار mean ، باید مشخص شود (فعلا برای مقدار مورد نظر شما مناسب است).
مقدار نهایی میانگین اعداد، با نام final_mean نمایش داده می شود. همیشه حتما این مقدار را چک کنید.
اعداد تصادفی، در متغیر r ذخیره می شوند.
نتیجه اجرای کدها :
کد:
r =
Columns 1 through 9
0.0001 0.0059 0.0090 0.0010 0.0292 0.0011 0.0015 0.0352 0.0198
Columns 10 through 18
0.0404 0.0113 0.0209 0.0001 0.0024 0.0033 0.0031 0.0125 0.0092
Columns 19 through 20
0.0031 0.0037
final_mean =
0.01064
موفق باشید.