کلیدستان

نسخه‌ی کامل: dastoor rng
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
salam mish dar morede dastoor rng ye tozihati bedin? mamnoon.
سلام.
همان طور که می دانید ، در نرم افزار متلب ، یک سری از دستورها برای تولید اعداد تصادفی به کار می روند . مثلا دستور 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

مشاهده می کنید که دقیقا همان اعداد تصادفی تولید شده است .
mamnoon Smile