File: XorWowRandomImplTest.kt

package info (click to toggle)
kotlin 1.3.31%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 109,908 kB
  • sloc: java: 454,756; xml: 18,599; javascript: 10,452; sh: 513; python: 97; makefile: 69; ansic: 4
file content (27 lines) | stat: -rw-r--r-- 823 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
 * that can be found in the license/LICENSE.txt file.
 */

package test.random

import kotlin.math.pow
import kotlin.random.*
import kotlin.test.*

class XorWowRandomImplTest {
    @Test
    fun predefinedSequence() {
        val seed = 1
        val addend = (seed shl 10) xor (seed ushr 4)

        @Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
        val random: Random = XorWowRandom(seed, 0, 0, 0, 0, addend)

        // differs from reference 0.8178000247146859 because of different double mixing algorithm
        assertEquals(0.817799582443095, random.nextDouble())

        assertEquals(0.8407576507888734, random.nextBits(31) / (2.0.pow(31)))
        assertEquals(533150816, random.nextInt())
    }
}