Помилковість азартного гравця - це когнітивний ухил, коли ми помилково очікуємо, що речі, які траплялися часто, мають меншу ймовірність у майбутньому, а речі, які не відбулися через деякий час, мають більшу ймовірність скоро відбутися. Ваше завдання - реалізувати конкретну версію цього.
Пояснення виклику
Напишіть функцію, яка повертає випадкове ціле число між 1 і 6 включно. Захоплення: при першому запуску функції результат повинен бути рівномірним (в межах 1%), однак кожен наступний виклик буде перекошений на користь значень, які раніше були прокручені менше. Конкретні деталі:
- Штамб пам'ятає кількість генерованих до цього часу чисел.
- Кожен результат зважується за такою формулою:
- Наприклад, якщо нарахування кількості рулонів досі , ваги будуть , тобто, ви будете У 4 рази більше шансів скотити ніж .
- Зауважимо, що формула означає, що результат згортання зважується так само, як
Правила та припущення
- Застосовуються стандартні правила вводу / виводу та заборонені лазівки
- Валики рулонів не повинні бути детермінованими. (тобто використовувати PRNG, посіяний з енергонезалежного джерела, як правило, він є вбудованим.)
- Ваш випадковий джерело повинен мати період принаймні 65535 або бути справжньою випадковістю.
- Розподіл повинен бути в межах 1% для ваг до 255
- 16-бітні РГГ досить хороші для задоволення обох вищезазначених вимог. Більшість вбудованих РНГ є достатніми.
- Ви можете передавати поточний розподіл до тих пір, поки цей дистрибутив буде вимкнено або вимкнено під час виклику, або після повернення після повернення. Оновлення розподілу / підрахунків є частиною цього завдання .
- Ви можете використовувати ваги замість лічильників. При цьому кожен раз, коли вага падає до 0, всі ваги повинні збільшуватися на 1, щоб досягти такого ж ефекту, як зберігання рахунків.
- Ви можете використовувати ці ваги як повторення елементів у масиві.
Удачі. Нехай байти коли-небудь будуть на вашу користь.