Показать сообщение отдельно
Старый 17.03.2016, 13:39
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 4  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Но конкретно об этом цикле, я сомневаюсь, что из-за него игра зависает на пару секунд. Это просто невозможно. 100 простых итераций он отработает мгновенно. Явно дело в чем-то другом.
Я стараюсь по возможности избегать while, просто решил проверить. Действительно, попереставлял этот кусок кода в разные места, иногда тормозит, иногда нет.

Тем не менее, остаётся вопрос: какой алгоритм использовать для расстановки случайных чисел (допустим, от 0 до 9) в одномерном массиве длиной в 8 ячеек, со следующими ограничениями:
- не больше 6 чисел, отличных от 0;
- не больше 4 одинаковых чисел;
- не больше 2 одинаковых числе подряд.
Мне на ум приходит 2 варианта:
1. Присваивать по-очереди каждой ячейке случайное число и проверять, подходит ли оно, уменьшая на 1 в случае неудачи, вплоть до 0;
2. Присвоить случайные числа сразу всем ячейкам, затем проверять условия сразу по всем и, если где-то косяк, присвоить новую комбинацию - и так до тех пор, пока комбинация не окажется удачной.
Какой подход лучше: 1, 2 или есть другие?