PDA

View Full Version : مبتدی: اعداد تصادفی



Afsar94
جمعه 25 اردیبهشت 1394, 17:40 عصر
سلام دوستان.

من یه تازه وارد تو C++‎‎‎‎ هستم و تازه شروع به یادگیری کردم.

کسی میتونه این مشکل من رو حل کنه؟

برنامه ای میخوام که یک عدد تصادفی اعشاری بین دو عدد خاص (مثلا 0 و 1) تولید کنه. دوستانی که زحمت میکشند لطفا الگوریتم و چرایی نوشتن کدهاشون به شکلی که نوشتن , رو توضیح بدن.


با تشکر.

chikar
جمعه 25 اردیبهشت 1394, 23:48 عصر
برنامه ای میخوام که یک عدد تصادفی اعشاری بین دو عدد خاص (مثلا 0 و 1) تولید کنه. .


#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
double r = (rand()/(double)(RAND_MAX + 1));
std::cout << " r is: " << r <<"\n";
}
return 0;
}
خروجی برای ده عدد تصادفی
r is: 0.00125122
r is: 0.563568
r is: 0.193298
r is: 0.808716
r is: 0.584991
r is: 0.479858
r is: 0.350281
r is: 0.895935
r is: 0.822815
r is: 0.746582

Afsar94
شنبه 26 اردیبهشت 1394, 12:53 عصر
همونطور که گفتم من مبتدی هستم. میشه منطق برنامه رو برام توضیح بدید و اینکه چرا Rand رو بر rand_max+1 تقسیم کردین؟

یه سوال دیگه هم داشتم. این برنامه فقط برای اعداد بین صفر و یک کار میکنه؟

rahnema1
شنبه 26 اردیبهشت 1394, 14:53 عصر
سلام
با استفاده از هدر random به این صورت میتونید اعداد تصادفی بین 0 تا 1 تولید کنید. دیگه لطفا نگید چه طور شد چون توضیحاتش مفصله :لبخند:

#include <random>
#include <chrono>
#include <iostream>
int main()
{
std::uniform_real_distribution<> distribution (0.0 , 1.0);
std::default_random_engine generator( std::chrono::system_clock::now( ).time_since_epoch().count());
for (int i = 0; i < 10 ; i++)
std::cout << distribution(generator) << std::endl;
}