Task

(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)

 
# Project : Seven-sided dice from five-sided dice
 
for n = 1 to 20
         d = dice7()
         see "" + d + " "
next
see nl
 
func dice7()
         x = dice5() * 5 + dice5() - 6
         if x > 20 
            return dice7()
         ok
         dc = x % 7 + 1
         return dc
 
func dice5()
        rnd = random(4) + 1
        return rnd
 