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


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

تولید اعداد تصادفی

#1
Rainbow 
با سلام
ببخشید من یه سوال داشتم من اگه بخوام اعداد تصادفی مانند شکل زیر را تولید کنم چه کدی رو بنویسم به طوری که بعضی از سطرها صفر باشه
1 8
1 3
1 4
3 6
4 6
4 7
6 8
0 0
پاسخ
 سپاس شده توسط zzccflpkup

تولید اعداد تصادفی

#2
سلام .
برای اعداد تصادفی از دستور rand در متلب استفاده می شود .
البته این دستور اعداد تصادفی بین 0 تا 1 را تولید می کند اما با دستورات زیر می توانید اعداد تصادفی بین a تا b را تولید کنید :

کد:
a=2;
b=4;
A=a+(b-a)*rand(1)

کد متلب بالا یک عدد تصادفی بین 2 تا 4 تولید می کند . مثلا یک نتیجه برای این کد متلب به صورت زیر می باشد :

کد:
A =

    2.8724

خوب حالا فرض کنید که بخواهید یک ماتریس با 3 ردیف و 2 ستون داشته باشید که هر عنصر آن یک عدد تصادفی در بازه 2 تا 4 باشد ، برای این منظور باید درون پرانتز دستور rand ، تعداد ردیف و ستون را به صورت زیر مشخص کنید :

کد:
a=2;
b=4;
A=a+(b-a)*rand(3,2)

نتیجه یک بار اجرای کدهای متلب بالا به صورت زیر می باشد :

کد:
A =

    2.7506    2.0767
    3.1794    2.5314
    3.9904    2.6044

چنانچه بخواهید اعداد تصادفی اعشاری نبوده و حتما عدد صحیح باشند می توانید از دستور round استفاده کنید . البته دستورات دیگری نیز برای گرد کردن اعداد اعشاری وجود دارند که تفاوت هایی با هم دارند و می توانید در مبحث زیر تفاوت آنها را متوجه شوید :

گرد کردن اعداد اعشاری در متلب

مثلا فرض کنید یک ماتریس با 6 ردیف و 2 ستون می خواهیم که هر عنصر آن یک عدد صحیح تصادفی در بازه عددی 0 تا 10 باشد ، برای این منظور کدهای زیر را می نویسیم :

کد:
a=0;
b=10;
A=round(a+(b-a)*rand(6,2))

نتیجه یک بار اجرای کدهای متلب بالا به صورت زیر خواهد بود (چون اعداد تصادفی هستند ، هر بار اجرا نتایج متفاوتی را خواهد داد) :

کد:
A =

     6     8
     1     2
     3     4
     1     8
     7     2
     8     7

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

تولید اعداد تصادفی

#3
ممنون ولی اگه بخوام در بعضی از سطرها 2 تا صفر به طور تصادفی ایجاد شه اونوقت اونو چه جوری بنویسم؟

منظورم اینه که ردیف اخر همیشه صفر باشه
پاسخ
 سپاس شده توسط zzccflpkup

تولید اعداد تصادفی

#4
اگر بخواهید بعضی سطرها به صورت تصادفی صفر بشه ، همون طور که گفتم می تونید از دستور if در متلب استفاده کنید و شرط بگذارید که اگه در هر سطر ، اگر هر کدام از دو عنصر برابر صفر بود آنگاه عنصر دیگر هم صفر باشد . در این صورت بعضی سطرها دارای دو عنصر صفر خواهند بود .
اما روش دیگری هم هست و اون اینه که ابتدا با دستور rand در متلب اعداد تصادفی را در بازه 1 تا 10 برای ماتریس بسازید و پس از آنکه ماتریس به صورت اولیه ساخته شد آنگاه به تعداد سطرهایی که می خواهید سطر صفر داشته باشید با دستور rand عدد تصادفی در بازه 1 تا عدد مربوط به تعداد سطر ماتریس ایجاد کنید و سپس بر اساس عدد تصادفی ایجاد شده ، سطر مربوط به آن را تماما تبدیل به صفر کنید .
اما اگه میخواهید فقط سطر آخر صفر باشه ، بهتره اگه اندازه ماتریس را میدانید ، پس از تولید اعداد تصادفی ، دو عنصر آخر ماتریس را برابر صفر قرار دهید و دستور خاصی نمی خواهد .
البته خیلی واضح توضیح نداده بودید ، ولی امیدوارم همونی که خواستید رو نوشته باشم .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

تولید اعداد تصادفی

#5
ببخشید میشه کدو برام بنویسین راستش زیاد مطلب بلد نیستم ممنون
پاسخ
 سپاس شده توسط zzccflpkup

تولید اعداد تصادفی

#6
فرض کنید بخواهیم ماتریسی با 12 ردیف و 2 ستون بسازیم که عناصر آن به صورت اعداد تصادفی 1 تا 10 باشند و همچنین 3 ردیف از آن به صورت تصادفی برابر صفر باشند و همچنین ردیف آخر آن نیز تماما صفر باشد ، کدهای متلب زیر را می نویسیم :

کد:
clear all
close all
clc

a=1;
b=10;
A=round(a+(b-a)*rand(12,2))

a=1;
b=12;
row_random=round(a+(b-a)*rand(1,3))

for nn=1:12
    for mm=1:3
        if(nn==row_random(mm))
            A(nn,:)=0;
        end
    end
end
A(end,:)=0;
A

نتیجه یک بار اجرای کدهای متلب بالا :

کد:
A =

     0     0
     3     6
     3     6
     2     3
     0     0
     8     6
     0     0
     2     9
     3     7
     9     7
     4     2
     0     0
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

تولید اعداد تصادفی

#7
ممنون
پاسخ

تولید اعداد تصادفی

#8
راستی معذرت من اگه بخوام اولش هم 2 تا 1 چاپ شه اونوقت اینجوری باید بنویسم؟
A(start,Smile=1;

A(end, : )=0;

A(start, : )=1;
پاسخ
 سپاس شده توسط zzccflpkup

تولید اعداد تصادفی

#9
احتیاجی به کلمه start نیست ، زیرا اندیس اولین ردیف همیشه 1 می باشد بنابراین باید کد زیر نوشته بشه :

کد:
A(1,:)=1;

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


پرش به انجمن:


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