嗨,我正在创建一个可以生成随机数的应用。我的问题是如何让它不重复两次相同的数字?
这是我的代码
int text = rand() % 5;
switch (text) {
case 0:
textView.text = @"1";
break;
case 1:
textView.text = @"2";
break;
case 2:
textView.text = @"3";
break;
case 3:
textView.text = @"4";
break;
case 4:
textView.text = @"5";
break;
default:
break;
}
感谢您的帮助!
答案 0 :(得分:2)
将新的随机值与当前值进行比较。如果它类似,只需创建一个新的随机值,直到它不同:
int text = rand() % 5;
while (text == [textView.text intValue]) {
text = rand() % 5;
}
switch (text) {
case 0:
textView.text = @"1";
break;
case 1:
textView.text = @"2";
break;
case 2:
textView.text = @"3";
break;
case 3:
textView.text = @"4";
break;
case 4:
textView.text = @"5";
break;
default:
break;
}
此外,使用do-while-loop更优雅。只需在切换之前更换部件:
int text;
do {
text = rand() % 5;
} while (text == [textViewtext intValue]);
答案 1 :(得分:0)
选择新值时,您实际上并没有从五个中抽出,只有四种可能:禁止使用旧值。
这样做并调整结果以始终忽略旧值:
// get the current value
int oldNumber = [textView.text intValue] - 1;
// pick a new value
int randomNumber = rand() % 4;
// adjust new value to avoid the old value
if (randomNumber >= oldNumber)
randomNumber += 1;
// set the new value on the textView
textView.text = [@(randomNumber + 1) stringValue];