java - 关于随机值

标签 java algorithm random

<分区>

Possible Duplicate:
Getting N random numbers that the sum is M

嗨 我有一个问题:

我如何获得所有随机值的总和为 1。 像 {0.5,0.5}{0.25,0.25,0.5} 等等。 而且这些值的数量每次都不一样,一次可以是2,一次可以是3,就像上面的例子一样! 谢谢。

最佳答案

我将为您概述基本算法:

  • 决定您将生成多少个随机数以求和。

  • 生成那么多随机数。

  • 决定他们的总和应该是多少。

  • 将上一步的数字除以随机数的总和。

  • 将每个随机数除以上一步的数字。

基本上,您要做的是生成一堆无界随机数,然后对它们进行调整,使它们加起来等于某个特定数字。

顺便说一句:在您生成的所有随机数都为零的极少数情况下,您将使用此算法出现被零除的错误。所以你应该在你的实现中捕获它并在循环中重试随机数生成,直到你得到一个非零的随机数和。

关于java - 关于随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406412/

相关文章:

java - 我的 ByteToMessageDecoder 类中存在内存泄漏

python - 如何暴力破解一棵 'yes/no' 决策树?

c - 该算法存在一些缺陷,无法通过名为 "partly calculate A add B"的所有OJ测试

javascript - 继续嵌套 for 循环

c - rand() 在 C 中做什么?

javascript - 高斯分布的参数,使用中心极限定理生成

arrays - 在 Swift 中从数组中获取随机元素

java - hibernate 继承缓存,CacheKey 中使用的实体名称不正确?

java - 如何从接收到的数据中正确提取信息?

java - 通过添加camel功能扩展现有的spring应用程序