我想在C中生成随机值

时间:2013-12-26 05:20:11

标签: c random

我想问一下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,则返回值。

我该怎么办?

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。