mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 06:08:41 +01:00
Extended test for Random.sample to cover both branches (#715)
I've verified that this test fails without the fix in change
186a8c7c13.
See issue #713
This commit is contained in:
committed by
GitHub
parent
54b4c233b9
commit
f81cb5d23c
@ -6,15 +6,22 @@ var random = Random.new(12345)
|
||||
System.print(random.sample(["single"])) // expect: single
|
||||
|
||||
// Should choose all elements with roughly equal probability.
|
||||
var list = ["a", "b", "c", "d", "e"]
|
||||
var histogram = {"a": 0, "b": 0, "c": 0, "d": 0, "e": 0}
|
||||
for (i in 1..1000) {
|
||||
var sample = random.sample(list)
|
||||
histogram[sample] = histogram[sample] + 1
|
||||
var testProbability = Fn.new { |list|
|
||||
var histogram = {}
|
||||
for (entry in list) histogram[entry] = 0
|
||||
|
||||
for (i in 1..1000) {
|
||||
var sample = random.sample(list)
|
||||
histogram[sample] = histogram[sample] + 1
|
||||
}
|
||||
|
||||
System.print(histogram.count)
|
||||
for (key in histogram.keys) {
|
||||
var error = (histogram[key] / (1000 / list.count) - 1).abs
|
||||
if (error > 0.2) System.print("!!! %(error)")
|
||||
}
|
||||
}
|
||||
|
||||
System.print(histogram.count) // expect: 5
|
||||
for (key in histogram.keys) {
|
||||
var error = (histogram[key] / (1000 / list.count) - 1).abs
|
||||
if (error > 0.2) System.print("!!! %(error)")
|
||||
}
|
||||
// Depending on the size of the list a different algorithm is used, so test both branches.
|
||||
testProbability.call(["a", "b", "c", "d", "e"]) // expect: 5
|
||||
testProbability.call([0, 1, 2, 3, 4, 5, 6]) // expect: 7
|
||||
|
||||
Reference in New Issue
Block a user