当前位置: 首页 > 知识库问答 >
问题:

kotlin-stdlib-common中随机性的来源

松旻
2023-03-14

在 kotlin-stdlib-common 中,是否有任何开箱即用的随机性来源?是标准java.util.Randomkotlin.math.random*还是基本当前时间毫的一些实现,我都可以用它来创建自己的随机数生成器?我找不到任何内容。

如果不存在,如果不设置自己的平台依赖实现,您将如何获得随机性的来源?这是我唯一需要的方法:

expect class Rng {
    fun nextInt(): Int
}

我试图让它与平台无关。

共有2个答案

刘星火
2023-03-14

这也许是一个有很多链接的帖子,这可能会导致你的答案在另一个城堡的问题:什么时候一个答案不是答案?,所以我尽力写链接描述。我对 Kotlin Multiplatform 的理解是 Kotlin-Multiplatform = Kotlin-JVM Kotlin-JS。

我认为静态编程语言-JVM的随机数是由java.util.Random提供的,Math.Random()如果是静态编程语言-JS,原因如下:

  • 我怎样才能在 Kotlin 中得到一个随机数?,这个问题中有一个答案说 Kotlin-JS 可以使用 Math.Random() 来获取随机数。
  • 无法获得任何与 Kotlin-JVM 相关的随机数方法的任何结果,但在 Kotlin-JS 中有一个 random()。
  • Kotlin-JVM 相关文件的源代码,在使用 Random() 时,有一个导入 java.util.*,或者一些文件直接使用 java.util.Random 例如 kotlin/libraries/stdlib/jvm/src/kotlin/collections/MutableCollectionsJVM.kt#L78。

以及,java.util。Random的设计与结果平台无关,也与实现平台无关,原因如下:

  • Java的RNG(使用种子)是否独立于平台?尽管这个问题可能已经过时了。
  • 我们无法在 JDK8/java.util.Random 的源代码或 JDK10/java.util.Random 的源代码中找到关键字“native”,并且 RNG 逻辑在这些源代码中很清楚,其中种子由 nanoTime() 决定(如果未提供),而 RNG 是第 2 卷 TAOCP 的实现。

所以,我认为,

如果不设置自己的平台相关实现,如何获得随机性的来源?

也许一个足够随机的种子和一个足够随机的RNG。

司马飞鸿
2023-03-14

答案是:等待静态编程语言1.3发布,其中公共库将被丰富为可以提供随机值源的类和方法。

https://kotlinlang . org/docs/reference/whats new 13 . html # multi platform-random

 类似资料:
  • 昨天我更新了Android Studio版和Kotlin插件版。 Android Studio版本:3.1.2 Kotlin版本:1.2.41 当我使用此配置创建一个Android项目时,Kotlin编译器警告说 w:/home/ganeshtikone/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jr

  • 我想看看哪个随机数生成器包在我的神经网络中更快。 我目前正在更改github的一个代码,其中两个都是numpy。随机和随机包用于生成随机整数、随机选择、随机样本等。 我之所以更改此代码,是因为出于研究目的,我希望设置一个全局种子,以便能够比较超参数不同设置的精度性能。问题是,现在我必须为随机包和numpy包设置两个全局种子。理想情况下,我只想设置一个种子,因为来自两个随机数生成器序列的图形可能会更

  • Android Studio>New Project>Configure Kotlin in Project action将kotlin-stdlib-jre7的引用添加到gradle文件中。我希望kotlin-stdlib,因为我们Kotlin的目标JVM是1.6。 还没有找到很好的解释。例如。这个答案说明 kotlin-stdlib-jre7工件不应该在Android上工作,因为Android

  • 您好,如何在kotlin中生成0到10之间的随机整数?我尝试了<code>Random()。nextInt()和,但我无法生成一个。谢谢

  • 问题内容: 在Java中,给定 n个 项目,每个项目的权重为 w ,一个人如何从集合中选择机会等于 w 的随机项目? 假设每个权重是0.0到1.0的两倍,并且集合中的权重之和为1。Item.getWeight()返回Item的权重。 问题答案: Item[] items = …;

  • 在前面的章节中,我们开发了深入描述数据所需的技能。 数据科学家也必须能够理解随机性。 例如,他们必须能够随机将个体分配到实验组和对照组,然后试图说明,观察到的两组结果之间的差异是否仅仅是由于随机分配,或真正由于实验所致。 在这一章中,我们开始分析随机性。 首先,我们将使用 Python 进行随机选择。 在numpy中有一个叫做random的子模块,它包含许多涉及随机选择的函数。 其中一个函数称为c