J'essaie de trouver un moyen de créer des nombres aléatoires qui "se sentent" aléatoires sur de courtes séquences. C'est pour un jeu de quiz, où il y a quatre choix possibles, et le logiciel doit choisir l'un des quatre endroits où mettre la bonne réponse avant de remplir les trois autres avec des distracteurs.Générateur de nombres entiers "feeling" aléatoire pour les séquences courtes
De toute évidence, arc4random % 4
va créer plus que des résultats suffisamment aléatoires sur une longue séquence, mais dans une courte séquence, il est tout à fait possible (et un événement fréquent!) Que cinq ou six du même nombre reviennent à la suite. C'est ce que je vise à éviter. Je ne veux pas non plus simplement dire «ne jamais choisir le même carré deux fois», car cela ne donne que trois réponses possibles pour chaque question, sauf la première. Actuellement, je fais quelque chose comme ceci:
bool acceptable = NO;
do {
currentAnswer = arc4random() % 4;
if (currentAnswer == lastAnswer) {
if (arc4random() % 4 == 0) {
acceptable = YES;
}
} else {
acceptable = YES;
}
} while (!acceptable);
est-il une meilleure solution à ce que je donne sur?
Je pense que la réponse à cela va dépendre fortement du nombre de "pièces" à 4 côtés dans une rangée, car il n'y a peut-être pas de solution pour une séquence suffisamment courte. Vous avez évoqué le problème de la réduction des degrés de liberté, mais mon intuition me dit que tout processus de sélection post-hoc réduira le DoF. Dans votre exemple, la post-probabilité que A sera suivi par A devient 1/16 au lieu de 1/4 pour A, B. Je m'attends à ce qu'un joueur remarque que même si elle n'a pas remarqué qu'elle a remarqué. Les humains sont vraiment bons (comme le sont les pigeons). – msw
J'aurais dû indiquer que les séquences sont ouvertes. Je pense que pour la plupart des joueurs, ils seront relativement courts (moins de 100), mais en théorie, vous pouvez jouer pendant des heures et passer par des milliers de questions. Je ne pense pas que ce soit trop important, parce que les joueurs ne se souviendront probablement pas de l'enchaînement de plus de quelques questions, bien que, comme vous le dites, ils pourraient bien le remarquer sans s'en apercevoir. :) –