How to resolve the algorithm Seven-sided dice from five-sided dice step by step in the E programming language

Published on 12 May 2024 09:40 PM
#E

How to resolve the algorithm Seven-sided dice from five-sided dice step by step in the E 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 E programming language

Source code in the e programming language

def dice5() {
  return entropy.nextInt(5) + 1
}

def dice7() {
  var d55 := null
  while ((d55 := 5 * dice5() + dice5() - 6) >= 21) {}
  return d55 %% 7 + 1
}

def bins := ([0] * 7).diverge()
for x in 1..1000 {
  bins[dice7() - 1] += 1
}
println(bins.snapshot())

  

You may also check:How to resolve the algorithm Find the intersection of two lines step by step in the C# programming language
You may also check:How to resolve the algorithm Left factorials step by step in the Oforth programming language
You may also check:How to resolve the algorithm Hello world/Standard error step by step in the Standard ML programming language
You may also check:How to resolve the algorithm Safe primes and unsafe primes step by step in the Factor programming language
You may also check:How to resolve the algorithm Problem of Apollonius step by step in the Wren programming language