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

我如何生成数组中的随机数,这些随机数加起来就是定义的总数?

马渊
2023-03-14

我需要在Java中随机生成一个有7个插槽的数组。所有这些插槽的值必须至少为1,但组合起来,则具有另一个定义数字的总值。它们也都需要是一个int值,没有1.5或0.9816465684646数字。示例:

int a=10;

int[] ar = new int[7]
ar[0] = 1
ar[1] = 1
ar[2] = 2
ar[3] = 2
ar[4] = 1
ar[5] = 2
ar[6] = 1

我希望它生成类似的东西,但如果inta=15,所有的数字将以任何顺序总计15

共有1个答案

督飞羽
2023-03-14

生成N个随机数与给定和相加的标准方法是把你的和看作一条数字线,在这条线上生成N-1个随机点,对它们进行排序,然后使用点之间的差值作为你的最终值。要得到最小值1,首先从你的和中减去N,运行给定的算法,然后将1加回每个段。

public class Rand {
    public static void main(String[] args) {
        int count = 8;
        int sum = 100;
        java.util.Random g = new java.util.Random();

        int vals[] = new int[count];
        sum -= count;

        for (int i = 0; i < count-1; ++i) {
            vals[i] = g.nextInt(sum);
        }
        vals[count-1] = sum;

        java.util.Arrays.sort(vals);
        for (int i = count-1; i > 0; --i) {
            vals[i] -= vals[i-1];
        }
        for (int i = 0; i < count; ++i) { ++vals[i]; }

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

  • 我的输出包含3个TextField,当给定N值时(doClick()函数自动单击3个textfields),然后它在这3个textfields中随机生成3个数字,我的代码只生成随机数,但我希望这些随机生成的数字精确地加到给定的N。 例:当n=20时,可能的答案是:

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

  • 问题内容: 我正在尝试设计一种(好的)方法,从可能的数字范围中选择一个随机数,其中该范围内的每个数字都具有权重。简单地说:给定数字范围(0,1,2),请选择一个数字,其中0的概率为80%,1的概率为10%,2的概率为10%。 自从我的大学统计课程上课以来已经有8年了,所以您可以想象一下,目前适合我的方法并不适合我。 这是我想出的“便宜又肮脏”的方法。此解决方案使用ColdFusion。您可以使用任

  • random 生成随机数包 文档:https://www.npmjs.com/package/random 安装:npm install --save random 封装代码: app / extend / context.js // 导入 jwt const jwt = require('jsonwebtoken') // 导入随机数包 const random = require('rando

  • 问题 你需要生成在一定范围内的随机数。 解决方案 使用 JavaScript 的 Math.random() 来获得浮点数,满足 0<=X<1.0 。使用乘法和 Math.floor 得到在一定范围内的数字。 probability = Math.random() 0.0 <= probability < 1.0 # => true # 注意百分位数不会达到 100。从 0 到 100 的范围实