How to resolve the algorithm Seven-sided dice from five-sided dice step by step in the Forth programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Seven-sided dice from five-sided dice step by step in the Forth programming language
Table of Contents
Problem Statement
(Given an equal-probability generator of one of the integers 1 to 5 as dice5), create dice7 that generates a pseudo-random integer from 1 to 7 in equal probability using only dice5 as a source of random numbers, and check the distribution for at least one million calls using the function created in Simple Random Distribution Checker.
Implementation suggestion: dice7 might call dice5 twice, re-call if four of the 25 combinations are given, otherwise split the other 21 combinations into 7 groups of three, and return the group index from the rolls. (Task adapted from an answer here)
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Seven-sided dice from five-sided dice step by step in the Forth programming language
Source code in the forth programming language
require random.fs
: d5 5 random 1+ ;
: discard? 5 = swap 1 > and ;
: d7
begin d5 d5 2dup discard? while 2drop repeat
1- 5 * + 1- 7 mod 1+ ;
You may also check:How to resolve the algorithm Averages/Simple moving average step by step in the Ada programming language
You may also check:How to resolve the algorithm Knuth's algorithm S step by step in the F# programming language
You may also check:How to resolve the algorithm Respond to an unknown method call step by step in the Phix programming language
You may also check:How to resolve the algorithm Last Friday of each month step by step in the D programming language
You may also check:How to resolve the algorithm Inheritance/Single step by step in the Forth programming language