PDA

View Full Version : تولید عدد تصادفی در C#



soltaninejad
شنبه 09 مهر 1390, 11:20 صبح
سلام
چه جوری میشه در C# عدد تصادفی حول میانگین آخرین عدد با واریانس مشخص تولید کرد؟
دقیق تر بگم می خواهم با یک تابع تصادفی به طور مثال هر 2 دقیقه یک بار یک عدد تصادفی که درجه حرارت بدن را نشان می دهد با واریانس مشخص(مثلا 0.1) و حول اخرین عددی که تولید شده،تولید کنم.:متفکر:

mehran_sh_t
شنبه 09 مهر 1390, 11:36 صبح
باید با کد این رو پیاده کنید.
راهی که به نظر من می رسه:
فرض کنید آخرین عدد x باشه، در تولید عدد رندم(فرض می کنیم برای واریانس 0.1)، عدد رو بین -1 و 1 تولید کنید، تقسیم بر 10 کنید تا به بازه مورد نظر شما تبدیل شه، بعد به x اضافه کنید.

soltaninejad
شنبه 09 مهر 1390, 20:24 عصر
باید با کد این رو پیاده کنید.
راهی که به نظر من می رسه:
فرض کنید آخرین عدد x باشه، در تولید عدد رندم(فرض می کنیم برای واریانس 0.1)، عدد رو بین -1 و 1 تولید کنید، تقسیم بر 10 کنید تا به بازه مورد نظر شما تبدیل شه، بعد به x اضافه کنید.

ممنون از راه حلتون.
یه سوال:رابطه ی بین واریانس و تولید عدد تصادفی چیست؟یعنی اگر واریانس 2. یا 5. بشه عدد باید بین چه اعدادی تولید بشه؟اگر امکان داره کدش را برام بنویسید تا از صحت کارم مطمئن شوم.ضمنا زمان را چه جوری دخیل کنم تا هر 2 دقیقه یک بار عدد تولید بشه؟

mehran_sh_t
شنبه 09 مهر 1390, 21:34 عصر
float result = 0;

int variance = 1;

Random rnd = new Random();

result = result + (rnd.Next(-variance, variance) / 10);



به جای عدد 1 برای واریانس، عدد دلخواه رو بگذارید، result در هر مرحله نتیجه عدد تضادفی قبلی رو نگه می داره

برای زمان هم از timer استفاده کنید، مقدارش رو برابر با زمان دلخواه قرار بدید، در رویداد Tick تابعی که عدد رندم بعدی رو تولید می کنه (کدهای بالا) فراخونی کنید

** برای rnd، فقط یک بار اون رو ایجاد کنید (new) در غیر اینصورت همیشه عدد تکراری رو به عنوان عدد تصادفی میده، یک بار در اول برنامه ایجادش کنید، بعد ازش استفاده کنید

soltaninejad
جمعه 15 مهر 1390, 18:49 عصر
ببخشید یعنی اگه واریانس 700 یا 0.5 باشه باید مقدار واریانس را برابر این مقدار قرار بدیم؟تقسیم بر 10 برای چیه؟
برای timer چه جوری ست کنم هر دو دقیقه یکبار کد بالا را اجرا کند در interval اش زمانو بذارم ؟