-1

我想知道解决这个问题的最佳方法是什么。我设置了一个随机函数,它将 8 个字符串作为输入并输出其中一个随机字符串。我希望这个随机化器忽略所有没有价值的字符串。例如,如果我有字符串 text#,其中 # 是 1-8,假设 text5 和 text7 没有文本,那么我希望随机化函数检查是否有任何使用仅使用 text#,其中 # 是 1-8但不是 5 或 7。

4

3 回答 3

0

哎呀!将字符串放在一个数组中,而不是有 8 个不同的变量。然后使用 for 循环。

于 2014-01-14T22:24:48.373 回答
0
  1. 计算有效字符串的列表。
  2. 形成随机数(rand() % Count)
  3. 找到匹配的字符串。

示例代码

int StringCount = 8;
char *String[StringCount];

// populate `Sting` somehow

// count valid strings
int Count = 0;
for (int i=0; i<StringCount; i++) {
  if (ValidString(String[i])) Count++;
}

if (Count == 0) Handle_NoGoodStrings();
int random_number = rand()%Count;

int i;
for (i=0; i<StringCount; i++) {
  if (ValidString(String[i])) {
    if (Count == random_number) {
      break; 
    }
  }
}

// String[i] is the string
于 2014-01-14T23:49:56.493 回答
-1
  1. 将字符串放入数组中

  2. 使用您的随机函数在数组中选择一个随机索引

  3. 使用类似于以下的代码:

    诠释我;
    for (i = index; i != index; i = (i+1) % numitems)
    {
        /* 检查我们有一个字符串并且它不为空 */
        if (strings[i] && *strings[i])
            返回字符串[i];
    }
    返回空值;

假设index您的随机数介于 0 和numitems-1 之间。

于 2014-01-14T22:44:38.497 回答