Алгоритм создания уникальных лиц бинго - PullRequest
2 голосов
/ 22 января 2010

Кто-нибудь знает алгоритм, который может генерировать уникальные лица карты бинго? Я ищу для реализации этого алгоритма в C #.

Спасибо

Ответы [ 3 ]

4 голосов
/ 22 января 2010

получить 5 наборов, содержащих по 15 номеров каждый (1-15 для набора 1, 16-30 для набора 2 ...)
выберите 5 разных номеров в наборах 1,2,4,5
выберите 4 разных номера в наборе 3

Чтобы проверить, существует ли эта карта
Проверьте каждую существующую карту на соответствие левого верхнего угла новой карте
если оба числа равны, то перейти ко второму числу
если вы получаете 24 раза одно и то же число в одном и том же месте, то обе карты равны, и новая карта должна быть отклонена

0 голосов
/ 22 января 2010

Вот функция для генерации случайного подмножества целых чисел из заданного диапазона, который может оказаться полезным:

private static IEnumerable<int> RandomSubsetOfRange(int min, int max, int count)
{
    Random random = new Random();

    int size = max - min + 1;
    for (int i = 0; i <= size; i += 1)
    {
        if (random.NextDouble() <= ((float)count / (float)(size - i + 1)))
        {
            yield return min + i;
            count -= 1;
        }
    }
}
0 голосов
/ 22 января 2010

Это интересная проблема, но, как сообщил Майкл Мэдсен, учитывая количество возможностей, вам, вероятно, лучше сгенерировать их случайным образом, а после проверьте, есть ли у вас дубликаты. (Если вы не хотите сгенерировать все 111 квадриллионов возможностей, которые, я надеюсь, у вас есть место для хранения данных!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...