From 9e00a2c5b42dd57b6d835f210e9cb921a3a8333a Mon Sep 17 00:00:00 2001 From: Igor Laevsky Date: Thu, 11 Nov 2021 19:05:53 +0300 Subject: [PATCH] [Wasm] Implement platform random in stdlib --- .../src/kotlin/random/{Random.kt => PlatformRandom.kt} | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) rename libraries/stdlib/wasm/src/kotlin/random/{Random.kt => PlatformRandom.kt} (54%) diff --git a/libraries/stdlib/wasm/src/kotlin/random/Random.kt b/libraries/stdlib/wasm/src/kotlin/random/PlatformRandom.kt similarity index 54% rename from libraries/stdlib/wasm/src/kotlin/random/Random.kt rename to libraries/stdlib/wasm/src/kotlin/random/PlatformRandom.kt index 4270affaaec..5a320d56e75 100644 --- a/libraries/stdlib/wasm/src/kotlin/random/Random.kt +++ b/libraries/stdlib/wasm/src/kotlin/random/PlatformRandom.kt @@ -5,5 +5,11 @@ package kotlin.random -internal actual fun defaultPlatformRandom(): Random = TODO("Wasm stdlib: Random") -internal actual fun doubleFromParts(hi26: Int, low27: Int): Double = TODO("Wasm stdlib: Random") +@JsFun("() => ((Math.random() * Math.pow(2, 32)) | 0)") +private external fun initialSeed(): Int + +internal actual fun defaultPlatformRandom(): Random = + Random(initialSeed()) + +internal actual fun doubleFromParts(hi26: Int, low27: Int): Double = + (hi26.toLong().shl(27) + low27) / (1L shl 53).toDouble()