انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال لطفا کمک کنید

سوال لطفا کمک کنید

#1
سلام دوستان
من دنباله کددستوراتی میگردم که بشه با مطلب بین عدد صفر و 0/2 با میانگین مشخص اعداد تصادفی تولید کنه یعنی میانگین اعداد تصادفی تولید شده مقداری باشه که ما از قبل داریم.
از کمکتون بینهایت سپاسگذارم
پاسخ

سوال لطفا کمک کنید

#2
سلام.
میانگین اعداد تصادفی، به طور دقیق برابر یک مقدار باشد، یا اینکه در حدود آن مقدار باشد ؟
مثلا برای بازه 0 تا 0.2 که گفتید، میانگین برابر چه مقداری باشد ؟
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط bmosavari

سوال لطفا کمک کنید

#3
(۱۳۹۲/۰۶/۲۳, ۱۰:۴۲ ب.ظ)admin نوشته: سلام.
میانگین اعداد تصادفی، به طور دقیق برابر یک مقدار باشد، یا اینکه در حدود آن مقدار باشد ؟
مثلا برای بازه 0 تا 0.2 که گفتید، میانگین برابر چه مقداری باشد ؟

مدیر عزیز ممنونم میانگین اگر برابر عدد دقیقی باشه بهتره مثلا در بازه مذکور 0/01064 میانگینه مورد نظره من هست باز هم از کمکتون بینهایت ممنونماگر بشه تعداد اعداد رو هم مشخص کرد خیلی عالیه مثلا 30 عدد بین این بازه با میانگینه 0/01064 بده.
پاسخ

سوال لطفا کمک کنید

#4
سلام.
کدهای متلب :

کد:
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

موفق باشید. 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط 4i469x ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان