Рубрики
Без рубрики

7 Face Dice

«Бог не играет в кости», – говорит Эйнштейн. Но мы делаем! Что если было 7 игроков, и вам нужно Рэнд … Помечено случайными алгоритмами, Python, CPP.

«Бог не играет в кости», – говорит Эйнштейн. Но мы делаем! Что, если было 7 игроков, и вам придется случайным образом выбрать один с 6 костями на лице?

Позвольте мне развернуть вопрос: что, если бы была функция (Называется rand6) Это случайно генерирует N по всему числу от 1 до 6, и вы должны написать другую функцию (Называется rand7) Это генерирует случайный N Акатурное число от 1 до 7 с использованием первой функции (RAND6) ? И rand6 сбалансирован.

Обратите внимание, что вероятность всех событий должна быть равной!

Подождите минутку! Считать! Или просто пропустите этот шаг к моему глупому решению.

Идея состоит в том, чтобы запустить избирательную кампанию! будет local_max_count Это будет держать ведущие кандидаты, которые имеют равные голоса. Кандидаты являются одним из {1,2,3,4,5,6,7}, которые пройдут на второй, третий или n* th* выборы. И есть также Global_max переменная, которая сохраняет максимальное количество голосов ведущего кандидата.

int local_max_count = -1;

На каждом выборах мы играем в кубиках для каждого кандидата (не совсем то, что сделан Facebook), и это число будет его подсчетом.

for (int i = 0; i < 7 ; i ++)
    if (votes[i] == global_max)
    {
        local_max_count ++;
        // call the rand6()
        votes[i] = rand6();
    }

Тогда Глобальный Макс определяется как:

// Find the array maximum
for (int i = 0; i < 7 ; i ++)
    global_max = max (global_max, votes[i]);

И если был уникальный лучший кандидат, функция вернет это в качестве ответа:

if (local_max_count == 0)
    for (int i = 0; i < 7 ; i ++)
        if (votes[i] == global_max)
            return i + 1; // i + 1 because normal people start counting from 1.

Но что, если было два или много других кандидатов?

Есть смысл в том, что мы должны рекурсивно вызвать нашу функцию и изменить строку в //выборы Код для добавления значения к предыдущему значению:

votes[i] += rand6();

Вы можете запустить эту функцию в течение 1000 раз и визуализировать выход с пирог Или что -то, что вы пожелаете. Но это должно быть что -то вроде изображения ниже, потому что у всех чисел должен быть такой же шанс, чтобы сохранить справедливые.

Что если rand6 Функция была неуравновешенной?

Оригинал: “https://dev.to/tayyebi/7-face-dice-2cgc”