java - Java - 如何将一个整数分成 5 个随机部分
问题描述
我正在开发一个 android 图形应用程序,在代码中的某个时刻,我需要将一个矩形的宽度分成 5 个随机大小。
我的活动中有我的 randomintegerfunction(int min, int max) ,但这可以帮助我将它分成两部分。
如何将一个整数(比如说 100)分成 5 个随机部分,这样前一个或两个部分并不总是最大的,然后再细分为第三、第四和第五部分?
现在,我知道我可以尝试使用我的随机整数生成器来实现它,但问题是我认为我必须使用一些强制除法,比如将整数的前 70% 分成两部分,然后将剩余的 20% 分成两部分,总共 5 部分,但这样的方法总是会使第一部分大于第五部分,我想避免这种情况……让它真正随机。
例如,我想要什么...
第一部分可能是 7,第二部分 25,第三部分 5,第四部分 40,第五/最后/剩余部分 23。加起来为 100(或任何整数)。
我不确定如何编写这样一个函数的逻辑......所以,如果你对如何实现一个将整数随机分成 3 或 4 或 5 或 6 个真正随机大小/部分的函数有任何想法,请开导我!
谢谢你的时间!
解决方案
您可以从剩余金额中随机选择。
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
确保它们按升序排列。
推荐阅读
- c# - C#:如何用当前用户目录的路径创建一个字符串?
- java - RegEx 用于查找引号之间的匹配项
- ios - 我想将占位符日期显示为当前日期
- php - How to write artisan command to search for specific routes name in Laravel
- java - 与两个 wifip2p 设备建立套接字连接
- c - i2c 传输,stm32f103 作为 Master,STOP 条件生成问题
- c# - 在 ASP.Net 中实现和生成多个动态 SiteMapNode
- json - 使用 `curl` 的 API 调用在 Swift 中不起作用
- jquery - 另一个表单的另一个 ajax 函数不起作用
- css - 如何显示行的交替红色和绿色?