我想问一下C中的随机值。
我的C程序编码如下。
int random_a( int current_s,int r[num_s][num_a])
{
int i;
for(i=0;i<4;i++)
{
if(r[current_s][i] > -1) break;
}
return i;
}
例如条件
r[current_s][0] and r[current_s][2] > -1
如果我运行我的程序,则答案只有i = 0
。但是我希望得到0和2的随机答案(因为r[current_s][1]
和r[current_s][3] = -1
而不包括1和3)。
根据我的计划,我希望使用(rand()%4)
得到0到3之间的随机值;如果(r[current_s][i] > -1)
是正确的,我将返回该值。但是,如果(r[current_s][i] = -1)
再次生成随机数,直到r[current_s][i] > -1
,则返回值。
我该怎么办?
答案 0 :(得分:0)
假设current_s是包含值-1或更大的矩阵的行号,您可以使用以下代码:
int random_a(int current_a, int r[num_s][num_a])
{
if (current_a>num_s) return 0; //checking condition as current_a changes below
int i;
for (i=0;i<4;i++)
{
if(r[current_s][i] > -1) return i;
else if (r[current_s][i] && i==3) return (random_a(current_a+1,r[num_s][num_a])
else i++;
}
}
您可以根据需要更改current_a。