PDA

View Full Version : سوال: تولید عدد تصادفی



root88
چهارشنبه 08 اردیبهشت 1389, 08:08 صبح
با سلام ،دوستان من یه سوال دارم
من یه لیست پیوندی دارم که هر گره دارای دو تا فیلد هست یکی داده و یکی مقدار true یا false .می خوام یکی از گره های این لیست رو به تصادف (عددی بین 1 و طول لیست )انتخاب کنم و مقدار داده ای اونو برگردونم البته به شرطی که فیلد دوم آنtrue باشه و اگر این فیلد true نباشه یه گره دیگه به تصادف انتخاب کنه تا زمانی که شرط براورده بشه. بعضی وقتا کار میکنه بعضی وقتها کار نمیکنه مثلا من با لیستی با مقادیر گره اول 0وفیلد دوم false ،گره دوم 1وفیلد دوم false و ،گره دوم 2وفیلد دوم true کار نمیکنه.
این کد تابع اول هستش که یه لیست اونو صدا میزنه و دومی هم تابع تولید عدد تصادفیه
لطفا راهنمایی کنید.



int selectRandomAction(int ID)
{
int NewID,k,s;
ListNode* t=NULL;
t=alphaANDp->first;
s=alphaANDp->Count();
do
{
k=GenRandom(s);
while(k!=1 && t!=NULL)
{
k--;
t=t->link;
}
NewID=t->data1;
}while(t->action==false);
return NewID;

}



تابع تولید عدد تصادفی


int GenRandom(int lentgh)
{
int Rand;
srand(time(0));
if (lentgh==0)
{
cout<<"error";
return -1;
}
Rand=1+ rand()%lentgh;
return Rand;
}

qwerty11
چهارشنبه 08 اردیبهشت 1389, 15:07 عصر
سلام،
اشکالتون اینجاست که t رو داخل حلقه ی do while تعریف نمیکنین. فهمیدین !؟

root88
چهارشنبه 08 اردیبهشت 1389, 15:16 عصر
بله!:اشتباه: