September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
38
Task/Average-loop-length/Kotlin/average-loop-length.kotlin
Normal file
38
Task/Average-loop-length/Kotlin/average-loop-length.kotlin
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
const val NMAX = 20
|
||||
const val TESTS = 1000000
|
||||
val rand = java.util.Random()
|
||||
|
||||
fun avg(n: Int): Double {
|
||||
var sum = 0
|
||||
for (t in 0 until TESTS) {
|
||||
val v = BooleanArray(NMAX)
|
||||
var x = 0
|
||||
while (!v[x]) {
|
||||
v[x] = true
|
||||
sum++
|
||||
x = rand.nextInt(n)
|
||||
}
|
||||
}
|
||||
return sum.toDouble() / TESTS
|
||||
}
|
||||
|
||||
fun ana(n: Int): Double {
|
||||
val nn = n.toDouble()
|
||||
var term = 1.0
|
||||
var sum = 1.0
|
||||
for (i in n - 1 downTo 1) {
|
||||
term *= i / nn
|
||||
sum += term
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
println(" N average analytical (error)")
|
||||
println("=== ========= ============ =========")
|
||||
for (n in 1..NMAX) {
|
||||
val a = avg(n)
|
||||
val b = ana(n)
|
||||
println(String.format("%3d %6.4f %10.4f (%4.2f%%)", n, a, b, Math.abs(a - b) / b * 100.0))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue