Seven-sided dice from five-sided dice: Difference between revisions
Content added Content deleted
(Added Wren) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 15: | Line 15: | ||
<small>(Task adapted from an answer [http://stackoverflow.com/questions/90715/what-are-the-best-programming-puzzles-you-came-across here])</small> |
<small>(Task adapted from an answer [http://stackoverflow.com/questions/90715/what-are-the-best-programming-puzzles-you-came-across here])</small> |
||
<br><br> |
<br><br> |
||
=={{header|11l}}== |
|||
{{trans|Python}} |
|||
<lang 11l>F dice5() |
|||
R random:(1..5) |
|||
F dice7() -> Int |
|||
V r = dice5() + dice5() * 5 - 6 |
|||
R I r < 21 {(r % 7) + 1} E dice7() |
|||
F distcheck(func, repeats, delta) |
|||
V bin = DefaultDict[Int, Int]() |
|||
L 1..repeats |
|||
bin[func()]++ |
|||
V target = repeats I/ bin.len |
|||
V deltacount = Int(delta / 100.0 * target) |
|||
assert(all(bin.values().map(count -> abs(@target - count) < @deltacount)), βBin distribution skewed from #. +/- #.: #.β.format(target, deltacount, sorted(bin.items()).map((key, count) -> (key, @target - count)))) |
|||
print(bin) |
|||
distcheck(dice5, 1000000, 1) |
|||
distcheck(dice7, 1000000, 1)</lang> |
|||
{{out}} |
|||
<pre> |
|||
DefaultDict([1 = 199586, 2 = 200094, 3 = 198933, 4 = 200824, 5 = 200563]) |
|||
DefaultDict([1 = 142478, 2 = 142846, 3 = 143056, 4 = 142894, 5 = 143052, 6 = 143147, 7 = 142527]) |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |