Вступ
Вам дається генератор випадкових цілих чисел із наступною реалізацією
- Перше виклик завжди повертає 1.
- Другий виклик повертає випадкове ціле число між 1 і 2.
- Третя виклик повертає випадкове ціле число між 1 і 3.
- П'яте виклик повертає випадкове ціле число між 1 і n включно.
Виходячи з вищенаведеної функції, запишіть генератор випадкових кісток, який є абсолютно випадковим, повертаючи значення між 1 і 6 (включно) з однаковою ймовірністю.
Правила
- Ваша програма / функція повинна призвести до випадкового цілого числа від 1 до 6, включно, в якомусь використаному вигляді, тобто до стандартного виводу або як повернення функції.
- Зростаючий генератор випадкових чисел вище може бути визначений як "вільна" функція у вашій програмі (тобто не враховується до вашого числа символів), або окремий сценарій / програма, яка виконується за необхідності, припускаючи, що стан (
n
) є стійким між дзвінками. - Припустимо, що в одному випадку використання вашої програми ніколи не буде запитуватися більше 1000 рулонів з кістки, і початковий генератор випадкових чисел може бути скинутий до
1
кінця 1000 рулонів кісток, щоб уникнути переповненняn
. - Ваша програма може не використовувати будь-яке інше джерело випадкових чисел, крім висхідного випадкового генератора, визначеного вище. Ви, звичайно, можете вимагати декількох випадкових чисел від генератора випадкових чисел для кожного випуску одного колу.
- Це код-гольф, тож переможець - найкоротша відповідь або більшість голосів у разі вирівнювання. Якщо ви можете генерувати 1000 рулонів з кістки, використовуючи менше 1000 генерованих випадкових чисел, надайте собі 10-бальний бонус ефективності .
Приклад
./asc-rand
1 # random integer between 1 and 1
./asc-rand
1 # random integer between 1 and 2
./asc-rand
3 # random integer between 1 and 3
./asc-rand
4 # random integer between 1 and 4
# dice-gen generates random dice based on output of asc-rand program.
./dice-gen
3
./dice-gen
6
./dice-gen
5
./dice-gen
1
iterate(6):b=asc-rand(); print b
незаконна чи не працює? Можливо, я неправильно розумію третє правило.