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


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
dastoor rng

dastoor rng

#1
salam mish dar morede dastoor rng ye tozihati bedin? mamnoon.
پاسخ

dastoor rng

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

کد:
clear all
close all
clc

A=rand(1,3)

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

کد:
A =

    0.8309    0.8246    0.4530

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

کد:
A =

    0.3806    0.9259    0.7408

مشاهده می کنید که اعداد تصادفی متفاوتی ایجاد شده است و با مقادیر قبلی فرق دارند .
خوب این مسئله گاهی مشکلاتی را به وجود می آورد . مثلا فرض کنید شما برای یک نفر ، برنامه ای نوشتید که در یک مرحله از برنامه باید اعداد تصادفی ایجاد شود . شما برنامه را اجرا می کنید و نتایج خیلی خوب است ، سپس برنامه را برای آن فرد ارسال می کنید . اما وی پس از اجرای برنامه به شما می گوید که نتایج خوبی نگرفته است . دلیل آن این است که اعداد تصادفی ایجاد شده برای وی باعث شده که نتایج برنامه تغییر کند و نتایج خوبی نگیرد .
راه حل این مشکل ، دستور rng در متلب می باشد . این دستور وضعیت فعلی (current generator settings) را در متغیری ذخیره می کند که چنانچه آن متغیر را برای آن فرد بفرستید ، می تواند در برنامه ، اعداد تصادفی دقیقا برابر با اعداد تصادفی ساخته شده در زمان اجرا توسط شما ، ایجاد کند .
با یک مثال ، موضوع روشن تر می شود ، به همان کد قبلی ، دستور rng را اضافه می کنیم :

کد:
clear all
close all
clc

s=rng;
A=rand(1,3)

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

کد:
A =

    0.7919    0.4522    0.8492

خوب اکنون شما باید متغیر s و کد زیر را برای آن فرد ارسال کنید تا بتواند اعداد تصادفی دقیقا مثل اعداد شما داشته باشد :

کد:
rng(s);
A=rand(1,3)

نتیجه اجرا به صورت زیر است :

کد:
A =

    0.7919    0.4522    0.8492

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

dastoor rng

#3
mamnoon Smile
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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