我试图找出一种方法来创建在短序列上“感觉”随机的随机数。这是一个问答游戏,有四种可能的选择,软件需要在四个位置中选择一个来放置正确答案,然后再用干扰项填充其他三个位置。
显然,arc4random % 4
将在长序列中产生足够多的随机结果,但在短序列中完全有可能(并且经常发生!)有五个或六个相同数字连续返回。这是我要避免的。
我也不想简单地说“永远不要选择同一个方块两次”,因为这会导致除了第一个问题之外的每个问题只有三个可能的答案。目前我正在做这样的事情:
bool acceptable = NO;
do {
currentAnswer = arc4random() % 4;
if (currentAnswer == lastAnswer) {
if (arc4random() % 4 == 0) {
acceptable = YES;
}
} else {
acceptable = YES;
}
} while (!acceptable);
我忽略了这个问题有更好的解决方案吗?