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)

import scala.util.Random
 
object SevenSidedDice extends App {
  private val rnd = new Random
 
  private def seven = {
    var v = 21
 
    def five = 1 + rnd.nextInt(5)
 
    while (v > 20) v = five + five * 5 - 6
    1 + v % 7
  }
 
  println("Random number from 1 to 7: " + seven)
 
}