首页 > 解决方案 > Java - 如何将一个整数分成 5 个随机部分

问题描述

我正在开发一个 android 图形应用程序,在代码中的某个时刻,我需要将一个矩形的宽度分成 5 个随机大小。

我的活动中有我的 randomintegerfunction(int min, int max) ,但这可以帮助我将它分成两部分。

如何将一个整数(比如说 100)分成 5 个随机部分,这样前一个或两个部分并不总是最大的,然后再细分为第三、第四和第五部分?

现在,我知道我可以尝试使用我的随机整数生成器来实现它,但问题是我认为我必须使用一些强制除法,比如将整数的前 70% 分成两部分,然后将剩余的 20% 分成两部分,总共 5 部分,但这样的方法总是会使第一部分大于第五部分,我想避免这种情况……让它真正随机。

例如,我想要什么...

第一部分可能是 7,第二部分 25,第三部分 5,第四部分 40,第五/最后/剩余部分 23。加起来为 100(或任何整数)。

我不确定如何编写这样一个函数的逻辑......所以,如果你对如何实现一个将整数随机分成 3 或 4 或 5 或 6 个真正随机大小/部分的函数有任何想法,请开导我!

谢谢你的时间!

标签: javarandomintegerlogic

解决方案


您可以从剩余金额中随机选择。

int[] nums = new int[5];
int total = 100;
Random rand = new Random();
for (int i = 0; i < nums.length-1; i++) {
    nums[i] = rand.nextInt(total);
    total -= nums[i];
}
nums[nums.length-1] = total;
Arrays.sort(nums);

这将选择一个随机数并确保总和始终相同。最后一个sort确保它们按升序排列。


推荐阅读