Unbias a random generator: Difference between revisions

Added Kotlin
(Added Kotlin)
Line 837:
5: 20.05% 50.00%
6: 17.00% 49.88%</pre>
 
=={{header|Kotlin}}==
{{trans|Java}}
<lang scala>// version 1.1.2
 
fun biased(n: Int) = Math.random() < 1.0 / n
 
fun unbiased(n: Int): Boolean {
var a: Boolean
var b: Boolean
do {
a = biased(n)
b = biased(n)
}
while (a == b)
return a
}
 
fun main(args: Array<String>) {
val m = 50_000
val f = "%d: %2.2f%% %2.2f%%"
for (n in 3..6) {
var c1 = 0
var c2 = 0
for (i in 0 until m) {
if (biased(n)) c1++
if (unbiased(n)) c2++
}
println(f.format(n, 100.0 * c1 / m, 100.0 * c2 / m))
}
}</lang>
 
Sample output:
<pre>
3: 33.19% 50.19%
4: 25.29% 49.85%
5: 19.91% 50.07%
6: 16.71% 50.14%
</pre>
 
=={{header|Liberty BASIC}}==
9,476

edits