One of n lines in a file: Difference between revisions

Added Kotlin
m (Add reference to Rust rand library)
(Added Kotlin)
Line 1,114:
9 => 100139
10 => 99778
</pre>
 
=={{header|Kotlin}}==
<lang scala>// version 1.1.51
 
import java.util.Random
 
val r = Random()
 
fun oneOfN(n: Int): Int {
var choice = 1
for (i in 2..n) {
if (r.nextDouble() < 1.0 / i) choice = i
}
return choice
}
 
fun main(args: Array<String>) {
val n = 10
val freqs = IntArray(n)
val reps = 1_000_000
repeat(reps) {
val num = oneOfN(n)
freqs[num - 1]++
}
for (i in 1..n) println("Line ${"%-2d".format(i)} = ${freqs[i - 1]}")
}</lang>
 
Sample output:
<pre>
Line 1 = 100363
Line 2 = 99669
Line 3 = 100247
Line 4 = 100248
Line 5 = 100401
Line 6 = 99457
Line 7 = 100015
Line 8 = 100215
Line 9 = 99920
Line 10 = 99465
</pre>
 
9,476

edits