PDA

View Full Version : تولید عدد رندم چند رقمی



imdeveloper
دوشنبه 20 مهر 1394, 21:54 عصر
سلام
میخواستم چندتا عدد 5-6 رقمی رندم تولید کنم
چجوری میتونم؟
توی نت سرچ کردم به کد زیر رسیدم اما فقط 1 عدد دندم تولید میکنه :
cout << (rand() % 6 + 1) << endl;


اما مثلا من یه همچین چیزی میخوام : مثلا عدد رندم 5 رقمی : 13254

ehsan_faal
دوشنبه 20 مهر 1394, 23:26 عصر
برای کار با اعداد رندوم بهتره از کتابخونه های خودش استفاده کنید،به عنوان یه نمونه میتونید اینجوزی عمل کنید:

#include <iostream>
#include <random>
#include <cmath>
#include <ctime>
using namespace std;
long long int generateRandomNumber(const int& digits){
auto lower=pow(10,digits-1);
auto upper=pow(10,digits)-1;
default_random_engine eng(time(0));
uniform_int_distribution<int> rnd(lower,upper);
return rnd(eng);
}
auto main()->int{

cout<<generateRandomNumber(4)<<endl;
return 0;

}

imdeveloper
سه شنبه 21 مهر 1394, 22:26 عصر
برای کار با اعداد رندوم بهتره از کتابخونه های خودش استفاده کنید،به عنوان یه نمونه میتونید اینجوزی عمل کنید:

#include <iostream>
#include <random>
#include <cmath>
#include <ctime>
using namespace std;
long long int generateRandomNumber(const int& digits){
auto lower=pow(10,digits-1);
auto upper=pow(10,digits)-1;
default_random_engine eng(time(0));
uniform_int_distribution<int> rnd(lower,upper);
return rnd(eng);
}
auto main()->int{

cout<<generateRandomNumber(4)<<endl;
return 0;

}



سلام
ممنون الان من میخوام که مثلا 200تا عدد رندم تولید کنم
اومدم همچین حلقه ای ساختم اما میاد 1عدد رندم تولید میکنه و 200بار تکرار میکنه :|
int x;
for (x = 0; x <= 200;)
{
cout << generateRandomNumber(6) << endl;
x++;
}

خب چی باید بکنم تا 200تا عدد رندم متفاوت تولید کنه؟

ehsan_faal
سه شنبه 21 مهر 1394, 22:57 عصر
اگه اشتباه نکنم اینجوری که من استفاده کردم از این توابع تایم زمان کامپایل شدن رو میده به انجین.
میتونید اینجوری استفاده کنید:

#include <iostream>
#include <random>
#include <cmath>
#include <chrono>
using namespace std;
default_random_engine eng(chrono::system_clock::now().time_since_epoch() .count());
long long int generateRandomNumber(const int& digits){
auto lower=pow(10,digits-1);
auto upper=pow(10,digits)-1;

uniform_int_distribution<int> rnd(lower,upper);
return rnd(eng);
}
auto main()->int{
for(int i = 0;i<200;i++){
cout<<generateRandomNumber(4)<<endl;
}
return 0;
}

3498
4650
7416
4563
2586
4781
6485
5464
1484
7713
9814
2625
2580
3673
4997
1867
5867
7862
9827
1207
1452
5366
2922
9953
1549
6493
7723
9071
9290
4762
7439
7915
4314
4766
2159
5393
8743
1526
5609
1545
3176
9988
2771
6502
4012
1979
9396
5368
1875
3019
6378
7391
4315
6652
6013
8216
2399
3705
1830
9101
2273
6551
8679
6620
2564
5185
2095
1791
3894
7336
4309
4292
9729
9283
6879
3879
9790
1772
9898
3321
6624
2344
3358
5765
4647
1901
8715
1138
6199
3339
2090
2582
8129
3467
7885
9372
6649
6261
7635
7002
8930
1181
5658
8473
8244
6529
3333
2228
6386
5450
7259
1956
2170
2970
8087
8972
8261
1866
8397
8495
8483
8925
6261
2019
7680
2447
6152
6900
6667
8455
3478
6927
8048
1344
3313
3436
9554
4843
1146
8235
7360
1852
2776
8633
4545
3424
1447
4978
7945
7620
4849
2634
8666
4981
8399
5654
8684
2412
4695
2924
3074
4478
3670
7878
5677
3810
3780
2347
7101
2131
6398
1329
6813
2627
9726
2003
7356
9472
5034
2055
9327
2899
7004
9506
5443
9068
7561
6254
4638
1916
2085
9132
1497
6820
3830
6486
8438
7397
2424
6819

imdeveloper
چهارشنبه 22 مهر 1394, 16:38 عصر
بعدش خب الان من میتونم کدی بنویسم که مثلا بیاد بگه که به فرض از بین این 200 عدد رندم تولید شده چندبار 1 تکرار شده یا مثلا چندبار 2 تکرار شده؟؟
کد sql میتونم بنویسم :لبخند: اما توی این دقیقا نمیدونم باید چی کنم
ممنون میشم کمک کنید:متفکر:

ehsan_faal
چهارشنبه 22 مهر 1394, 16:47 عصر
شما میتونید این اعداد رو بریزید توی یک آرایه.
بعد خیلی راحت روی اونها عملیات ریاضی انجام بدید.فراوانی هر کدوم رو بگیرید و از این جور چیزا.این کارها جزو تمرینات فصل های اول دایتل.نباید زیاد سخت باشه براتون

imdeveloper
چهارشنبه 22 مهر 1394, 18:12 عصر
میشه یه مثال ساده بزنید :متفکر:!!
یعنی بریزم توی آرایه بعد بیام هر اندیس آرایه رو بررسی کنم که آیا مثلا برابر 1 هست و اگر بود مثلا مقدار متغیر x رو یک واحد افزایش بده؟؟