سلام.
همان طور که می دانید ، در نرم افزار متلب ، یک سری از دستورها برای تولید اعداد تصادفی به کار می روند . مثلا دستور 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 و کد زیر را برای آن فرد ارسال کنید تا بتواند اعداد تصادفی دقیقا مثل اعداد شما داشته باشد :
نتیجه اجرا به صورت زیر است :
کد:
A =
0.7919 0.4522 0.8492
مشاهده می کنید که دقیقا همان اعداد تصادفی تولید شده است .