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