View Full Version : سوال: عدد تصادفی در سی ++
h_mirgh20
دوشنبه 15 آبان 1391, 17:40 عصر
سلام
من میخوام با کد زیر عدد تصادفی تولید کنم:خجالت:
و اونارو توی یک آرایه بریزم
بین0و36
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a[4],i;
for(i=0;i<5;i++)
{
a[i]=(rand()%36);
cout<<a[i]<<"\n";
a[i]=0;
}
return 0;
}
اما هر بار که برنامه رو اجرا میکنم همون اعداد قبلی رو چاپ میکنه:ناراحت:
از code::blocks v.10.5 استفاده میکنم:لبخندساده:
مسعود اقدسی فام
دوشنبه 15 آبان 1391, 19:12 عصر
اول برنامه
srand ( time(NULL) )
رو اضافه کنید
h_mirgh20
دوشنبه 15 آبان 1391, 21:47 عصر
چون توی for استفاده میشه و زمان اجرای حلقه کمتر از 1 ثانیه هست بازم تکراری میشه
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int main()
{
int a[4],i;
for(i=0;i<5;i++)
{
srand(time(NULL));
a[i]=(rand()%36);
cout<<a[i]<<"\n";
a[i]=0;
}
return 0;
}
omidshaman
دوشنبه 15 آبان 1391, 21:56 عصر
میشه
Sleep(1500);
با این هدر
#include <windows.h>
داخل حلقه For اضافه کرد
h_mirgh20
دوشنبه 15 آبان 1391, 22:03 عصر
E:\random\rand\main.cpp||In function 'int main()':|
E:\ransom\rand\main.cpp|14|error: 'sleep' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|
ارور میده
omidshaman
دوشنبه 15 آبان 1391, 22:07 عصر
هدر رو گذاشتی ؟
کمپایلر و سیستم عاملت چیه؟
در ضمن sleep باید حرف اولش بزرگ باشه یعنی باشه Sleep
h_mirgh20
دوشنبه 15 آبان 1391, 22:12 عصر
حرف اولش مشکل داشت :لبخند:
راه بهتری نیست؟
من 1001 میلی ثانیه زدم الان
اما خیلی طول میکشه
من اگر بخوام با این کد 1000 تا عدد بسازم 16.68 دقیقه طول میکشه :افسرده:
h_mirgh20
دوشنبه 15 آبان 1391, 22:22 عصر
چطوری میشه میلی ثانیه زمان جاری سیستم رو برگردوند؟
omidshaman
دوشنبه 15 آبان 1391, 22:48 عصر
خوب شما از ترکیب Srand و rand این جوری استفاده کن
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
int main()
{
int i;
srand(time(0));
for(i=0; i < 30; i++) {
cout<<rand() % 36;
cout<<"\n";
}
return 0;
}
h_mirgh20
دوشنبه 15 آبان 1391, 23:20 عصر
من توی این کد استفاده کردم اما بازم تکراریه:گریه:
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <sstream>
using namespace std;
string pwg()
{
int a=0,b[3],i;
string pass;
pass.clear();
char incl[37]={"abcdefghijklmnopqrstuvwxyz0123456789"};
srand(time(0));
for(i=0;i<4;i++)
{
a= incl[rand() % 36];
b[i]=a;
stringstream tmp;
tmp << setw(3) << setfill('0') << b[i] ;
string s = tmp.str();
tmp.clear();
pass.append(s);
s.clear();
}
return pass;
}
int main()
{
int i;
for(i=0;i<10;i++)
{
cout<<pwg<<"\n";
}
return 0;
}
omidshaman
سه شنبه 16 آبان 1391, 00:05 صبح
خوب کدی که من بالا گذاشتم درسته این برنامه شما معلوم نیست چی به چیه!
حتی اگربزاری
a= incl[10]; باز هم همش 1 میده
h_mirgh20
سه شنبه 16 آبان 1391, 00:15 صبح
با اضافه کردن
srand(time(0));
اینجوری میشه
میخوام از اون آرایه incl به طور تصادفی انتخاب کنه
و کد اسکی انتخاب هارو بریزه تو یک رشته
omidshaman
سه شنبه 16 آبان 1391, 01:36 صبح
درستش میشه این...
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <sstream>
using namespace std;
string pwg()
{
int a=0,b[3],i;
string pass;
pass.clear();
char incl[37]={"abcdefghijklmnopqrstuvwxyz0123456789"};
for(i=0;i<4;i++)
{
a= incl[rand() % 36];
b[i]=a;
stringstream tmp;
tmp << setw(3) << setfill('0') << b[i] ;
string s = tmp.str();
tmp.clear();
pass.append(s);
s.clear();
}
return pass;
}
int main()
{
srand(time(0));
int i;
for(i=0;i<10;i++)
{
cout<<pwg()<<"\n";
}
return 0;
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.