PDA

View Full Version : مشکل اعداد Random و البته غیر تکراری



rosenth
پنج شنبه 16 شهریور 1385, 09:39 صبح
سلام. من میخوام در یک رنج مثلا بین 1 تا 10 تمام اعداد 1 تا 10 را به صورت تصادفی و غیر تکراری در آرایه قرار بدم. مثلا آرایه به شکل زیر در بیاد: {3،5،7،4،8،2،9،1،6،10}
و از کد زیر هم استفاده می کنم:

int cout=0; //loop index
Int16 i; //new generated number

ArrayList* array=new ArrayList(Num); //num==size af array
Random* random=new Random();

do
{
i=random->Next(1,RecNo); //RecNo== random Range
if(!array->Contains(__box(i)))
{
array->Add(__box(i));
cout+=1;
}
}while(cout<Num)
اما سیتم در یک حلقه بینهایت می افته و به نظر مشکل از اینه که سیستم نمی تونه همه اعداد رو تولید کنه. می تونید یه راه حل بهم پیشنهاد کنید؟

Armanprogrammer
پنج شنبه 16 شهریور 1385, 16:07 عصر
حرفت درسته کامپیوتر نمیتونه همه اعدادو درست کنه و چون داده های تصادفی کاملا هم تصادفی نیستن به خاطر همین مشکل پیدا میکنی میتونی از زمان استفاده کنی و دستور srand شاید مشکلت حل شه وگرنه باید خودت یک تابع برای محاسبه اعداد تصادفی درست کنی

Sepidar
پنج شنبه 16 شهریور 1385, 22:19 عصر
تو تاپیکای جواب داده شده حداقل 2 راه حل برای این مساله وجود داره
بخش دلفی و الگووریتم رو سرچ کن
مهم روش رسیدن به حله، نه زبونی که واسه این منظور استفاده شده

rosenth
جمعه 17 شهریور 1385, 08:47 صبح
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>

int main( ) {
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1, Iter2;

int i;
for ( i = 1 ; i <= 9 ; i++ )
{
v1.push_back( i );
}

random_shuffle( v1.begin( ), v1.end( ) );
cout << "The original version of vector v1 is: ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;

لطفا از تگ code به جای ltr استفاده کنید
با تشکر
سپیدار

Sepidar
یک شنبه 19 شهریور 1385, 00:47 صبح
اولا که از الگوریتمهای آماده STL استفاده کرده اید. در واقع این بنده خدا میخواد بدونه random_shuffle چجوری کار میکنه.

ثانیا هم که پیغامت برای چاپ آرایه در هم ریخته مشکوک میزنه. کدت کپی نیست که؟

Rapture
دوشنبه 23 اردیبهشت 1392, 16:55 عصر
این رو بخون:

http://csharpindepth.com/Articles/Chapter12/Random.aspx

darknes666
دوشنبه 23 اردیبهشت 1392, 21:29 عصر
به اینجا یک نگاه بنداز

http://barnamenevis.org/showthread.php?342958-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C-%D8%A7%D8%B9%D8%B4%D8%A7%D8%B1%DB%8C