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

Random.nextInt似乎没有应有的随机

柏正平
2023-03-14

这是我的功能:

private def generateOneThousandRandomNumbers(listOfNumbers: List[String] = List.empty): List[String] = {
  if (listOfNumbers.size == 1000) {
    listOfNumbers
  } else {
    val nextNumber: String = Random.nextInt(10000000).toString
    if (listOfNumbers.contains(nextNumber)) {
      println("DUPLICATE NUMBER GENERATED: " + nextNumber)
    }
    generateOneThousandRandomNumbers(listOfNumbers ++ List(nextNumber))
  }
}

我有十个测试,完全是这样的:

"areUnique1" in {
  val x = generateOneThousandRandomNumbers()
  x.size shouldBe x.distinct.size
}

因此,根据我的计算,一次测试只会产生1/10,000次重复运行,10次测试只会产生1/1000次重复运行。然而,它在大约50%的运行中创建了副本,我不知道为什么。

共有1个答案

杨乐
2023-03-14

根据生日悖论,你只需要 ~23 个人在一个房间里,然后就有 50% 的机会让他们中的 2 人分享生日,尽管事实上有 365 种不同的生日。

您的代码也是如此:您有10,000,000个不同的可能值,但是如果您在一个容器中放置的值超过< code>~sqrt(10,000,000) ~= 3162,将会出现一个

你只在你的集装箱里放了1000个,所以发生碰撞的可能性不到50%,但仍然很高。

 类似资料:
  • 我正试图在我的测试环境中部署一个基于3个节点的: 1个名称节点(主节点:172.30.10.64) 2个数据节点(slave1:172.30.10.72和slave2:172.30.10.62) 我在namenode中配置了主属性文件,在datananodes中配置了从属性文件。 主持人: hdfs站点。xml: 核心站点。xml: yarn-site.xml: mapred-site.xml:

  • 我对python还很陌生,我正在尝试创建21点。然而,当我试图打印出玩家的手牌时,我遇到了一些困难。 这是我的击球(抽牌)代码: 这是我打印卡片的代码: 我的代码所做的第一件事是为庄家和玩家抽两张牌,这运行得很好。然而,当玩家抽到一张牌后,它就会变得有点摇摆不定。输出如下所示: 当我抽到一张新牌时,这张牌不变,它保持我抽到的最后一张牌。然后,当我打印我的甲板,它打印我的旧甲板和我的新甲板。但是,分

  • 我正在运行具有以下配置的Web服务器: Ubuntu 14.04 PHP 5.5.9 PHP-FPM Nginx 当我在Symfony应用程序中上传文件时,我收到错误

  • 我有一个Camel-ReST路由,它使用Jackson将集合转换为JSON,但当集合中的对象包含LocalDate时,它会抛出一个错误(没有LocalDate,一切都很好)。 com.fasterxml.jackson.databind.exc.:默认不支持Java8日期/时间类型:添加模块"com.fasterxml.jackson.datatype: jackson-datatype-jsr3

  • 我正在使用Mapstruct 1.3.0投影这个源对象; 进入本DTO: 在我的界面中,我没有为字段“noMappingDefined”定义任何映射 在构建项目时,将POM中的compilerArgs中的UnappedTargetPolicy设置为WARN不会导致任何通知,并且在Mapstruct生成的目标类中找不到没有映射的字段。 生成的类没有像预期的那样包括未映射的字段,但是我希望在构建项目时

  • 问题内容: Jenkins无法启动模拟器。这是jenkins的控制台输出: 如果我输入 要么 我懂了 我在ubuntu 12.04上运行jenkins。 问题答案: 错误“ SDL初始化失败,原因是:没有可用的视频设备”将表明模拟器不在图形环境中运行。 然而,你的日志显示,VNC服务器 是 正在启动。但是,也许到模拟器启动时,VNC服务器还没有完全启动。 您可以通过将仿真器启动延迟几秒钟来检查是否