PDA

View Full Version : سوال: مشکل با پر کردن چند آرایه پشت سر هم با اعداد تصادفی



M.soheil
یک شنبه 24 آذر 1392, 20:22 عصر
سلام
من به تابع دارم که یه آرایه 9*9 رو می گیره و با اعداد تصادفی اون رو پر میکنه.
توی main برنامه یه آرایه 50 تایی از آرایه های 9*9 ایجاد کردم و با یه حلقه for و بوسیله ی تابعی که گفتم، مقدار دهیشون می کنم. ولی همه 50 تا آرایه با اعداد یکسانی پر میشن و دقیقا مثل هم ایجاد میشوند.
لطفا کمک کنید!

لازم بذکره که ابتدای تابع مذکور از srand(time(0));
نیز استفاده کردم.

rahnema1
یک شنبه 24 آذر 1392, 22:37 عصر
دوست عزیز ما که نمی دونیم شما چه نوشتید لطفا کل کد خودتون را بذارید

sr2m72
یک شنبه 24 آذر 1392, 22:38 عصر
سلام
من به تابع دارم که یه آرایه 9*9 رو می گیره و با اعداد تصادفی اون رو پر میکنه.
توی main برنامه یه آرایه 50 تایی از آرایه های 9*9 ایجاد کردم و با یه حلقه for و بوسیله ی تابعی که گفتم، مقدار دهیشون می کنم. ولی همه 50 تا آرایه با اعداد یکسانی پر میشن و دقیقا مثل هم ایجاد میشوند.
لطفا کمک کنید!

لازم بذکره که ابتدای تابع مذکور از srand(time(0));
نیز استفاده کردم.

اعداد تصادفی از 0 تا 100:

srand((unsigned int)time(0));
for(int i=0;i<10;i++)
cout<<rand() % 100<<endl;;

M.soheil
یک شنبه 24 آذر 1392, 22:51 عصر
این تابعی هست که ازش استفاده می کنم.chromosome همان نوع آرایه 9*9 هست که به عنوان کلاس تعریف کردم.
void chromosome::first_fill()
{
srand(time(0));
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(chrom[i][j]==0)
{
bool flag=false;
while(!flag)
{
int temp=1+rand()%9;
for(int k=0;k<9;k++)
{
if(chrom[i][k]==temp)
break;
if(k==8)
{
chrom[i][j]=temp;
flag=true;
}
}
}
}
}
fitness();
}

این هم main :
for(int i=0;i<50;i++)
{
su.first_fill();
collection[i]=su;
su.print();
}
su یه متغیر از توع chromosome هست و collectionآرایه ای از نوع chromosome.
الان 50 تا آرایه ی یک جور می ریزه توی collection!