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