在 kotlin-stdlib-common 中是否有任何开箱即用的随机性来源?无论是标准的一些实现java.util.Random
,kotlin.math.random*
还是我可以用来创建自己的随机数生成器的基本当前时间毫秒?我找不到任何东西。
如果不存在,您将如何在不设置自己的平台相关实现的情况下获得随机性来源?这是我需要的唯一方法:
expect class Rng {
fun nextInt(): Int
}
我正在尝试使其与平台无关。
在 kotlin-stdlib-common 中是否有任何开箱即用的随机性来源?无论是标准的一些实现java.util.Random
,kotlin.math.random*
还是我可以用来创建自己的随机数生成器的基本当前时间毫秒?我找不到任何东西。
如果不存在,您将如何在不设置自己的平台相关实现的情况下获得随机性来源?这是我需要的唯一方法:
expect class Rng {
fun nextInt(): Int
}
我正在尝试使其与平台无关。
答案是:等待 Kotlin 1.3 发布,公共库将丰富类和方法,这些类和方法可以提供随机值的源。
https://kotlinlang.org/docs/reference/whatsnew13.html#multiplatform-random
这可能是一个包含许多链接的帖子,这可能会导致您的答案在另一座城堡中的问题:什么时候答案不是答案?,所以我尽力写链接描述。而我对Kotlin Multiplatform的理解是Kotlin-Multiplatform = Kotlin-JVM + Kotlin-JS。
我认为 Kotlin-JVM 的随机数是由 提供的java.util.Random
,Math.Random()
如果是 Kotlin-JS,有以下几个原因:
Math.Random()
用来获取随机数。random()
。Random()
时,有一个import java.util.*
,或者一些文件直接使用java.util.Random
例如kotlin/libraries/stdlib/jvm/src/kotlin/collections/MutableCollectionsJVM.kt#L78。并且,java.util.Random
被设计为结果平台无关,也实现平台无关,原因如下:
所以我认为,
如果不设置自己的平台相关实现,您将如何获得随机性的来源?
也许是一个足够随机的种子和一个足够随机的 (P)RNG。