我想知道解决这个问题的最佳方法是什么。我设置了一个随机函数,它将 8 个字符串作为输入并输出其中一个随机字符串。我希望这个随机化器忽略所有没有价值的字符串。例如,如果我有字符串 text#,其中 # 是 1-8,假设 text5 和 text7 没有文本,那么我希望随机化函数检查是否有任何使用仅使用 text#,其中 # 是 1-8但不是 5 或 7。
问问题
115 次
3 回答
0
哎呀!将字符串放在一个数组中,而不是有 8 个不同的变量。然后使用 for 循环。
于 2014-01-14T22:24:48.373 回答
0
- 计算有效字符串的列表。
- 形成随机数
(rand() % Count)
。 - 找到匹配的字符串。
示例代码
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
将字符串放入数组中
使用您的随机函数在数组中选择一个随机索引
使用类似于以下的代码:
诠释我; 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 回答