当前位置: 首页 > 面试题库 >

生成总和为预定义值的随机数

罗翔
2023-03-14
问题内容

所以这是交易:我想(例如)生成4个伪随机数,将它们加在一起等于40。这在python中怎么可能是圆顶?我可以生成一个1-40的随机数,然后生成介于1和余数之间的另一个数字,依此类推,但是第一个数字将更有可能“抓住”更多机会。


问题答案:
b = random.randint(2, 38)
a = random.randint(1, b - 1)
c = random.randint(b + 1, 39)
return [a, b - a, c - b, 40 - c]

(由于您说“ 1-40”,所以我假设您需要整数,但是对于浮点数,可以很容易地将其推广。)

运作方式如下:

  • 将总范围随机分为两部分,即b。奇数范围是因为在中点以下至少2,在中点至少2。(这来自每个值的最小值1)。
  • 将每个范围随机分为两部分。同样,界限要占最小值1。
  • 返回每个切片的大小。他们加起来是40。


 类似资料:
  • 问题内容: 我需要在Java中随机生成一个具有7个插槽的数组。所有这些插槽的值都必须至少为1,但总和必须为另一个已定义数字的总和。它们也都必须是int值,不能为1.5或0.9816465684646数字。例: 我希望它生成类似的内容,但是如果int a = 15,则所有数字按任何顺序总计15 问题答案: 生成添加到给定总和的N个随机数的标准方法是将您的总和视为数字行,在该行上生成N-1个随机点,对

  • 第一次在StackOverflow。我希望有人能帮我搜索一个算法。 我需要在给定的范围内生成N个随机数,求和到给定的和! null 可以生成N个常数和的数,解模,像这样:生成和是常数的随机数,但我不能用范围来完成。 或者通过产生N个随机值,将它们求和,然后将常数和除以随机和,然后将每个随机数乘以这个商,就像这里提出的那样。 我不能采用这些解决方案的主要问题是,我的每个随机值都有不同的范围,我需要这

  • 问题 你需要生成在一定范围内的随机数,但你也需要对发生器进行“生成种子”操作来提供可预测的值。 解决方案 编写你自己的随机数生成器。当然有很多方法可以做到这一点,这里给出一个简单的示例。 该发生器绝对不可以以加密为目的! class Rand # 如果没有种子创建,使用当前时间作为种子 constructor: (@seed) -> # Knuth and Lewis' impro

  • 我在想,是否有办法生成一组随机数,其和总是一个常数。例如,20可以被划分为5个数字(1,2,3,4,10)。我不在乎这5个数字中的每一个是什么,只要它们的和等于20。有任何方法可以通过编程实现吗?

  • 本文向大家介绍Ruby生成随机数的方法总结,包括了Ruby生成随机数的方法总结的使用技巧和注意事项,需要的朋友参考一下 数字实际上不是随机的 没有一台计算机能纯粹通过计算产生真正的随机数。它们能做的最好的事情就是生成伪随机数,伪随机数是一组看起来随机但实际上不是随机的数字。 对于人类观察者来说,这些数字确实是随机的。不会有短的重复序列,而且,至少对人类观察者来说,它们是完全随机的。但是,如果有足够

  • 问题内容: 我将如何列出N个(例如100个)随机数,使其总和为1? 我可以用 我将如何修改此列表,使其总数为1(这是用于概率模拟)。 问题答案: 实际上,最简单的解决方案是采用N个随机值并除以和。 一种更通用的解决方案是使用Dirichlet发行版 http://en.wikipedia.org/wiki/Dirichlet_distribution (可在numpy中获得)。 通过更改分布的参数

  • 问题内容: 我需要从给定范围生成随机的BigDecimal值。用Java怎么做? 问题答案:

  • 我需要在Java中随机生成一个有7个插槽的数组。所有这些插槽的值必须至少为1,但组合起来,则具有另一个定义数字的总值。它们也都需要是一个int值,没有1.5或0.9816465684646数字。示例: 我希望它生成类似的东西,但如果inta=15,所有的数字将以任何顺序总计15