我正在开发一款游戏,我必须随机生成一个包含4个元素的int数组。我的问题是所有数组元素的平均值必须是整数。
示例: 数组1 {4,2,3,7},数组的平均值是28,75,这不是我想要的,
数组2 {3,7,6,4},均值为20,这是好的
现在我可以创建一个循环来检查随机生成的数字的平均值是否为整数,但这似乎不是一种有效的方法。
我正在为之工作的游戏是那些了解它的人的平均数。
答案 0 :(得分:1)
如果均值是整数,则总和必须可以被4整除。
int[] n = new int[4];
选择四个数字,并计算它们的总和:
int sum = 0;
for (int i = 0; i < 4; ++i) {
sum += (n[i] = random.nextInt());
}
计算sum / 4
的剩余部分:
int r = sum % 4;
所以你现在需要调整总和以便sum % 4 == 0
。你可以:
从数组的任何元素中减去r
:
n[random.nextInt(4)] -= r;
或将4 - r
添加到任何元素:
n[random.nextInt(4)] += 4 - r;
答案 1 :(得分:0)
选择目标平均值"
和随机整数'
,m
。
您的数组是[n1
,n2
,m-n1
,m+n1
]。 Haven没有想过这个发行版的属性是什么,但它应该有效。
答案 2 :(得分:0)
我相信下面的函数可以做你想要的,给出你想要生成多少个值的参数(n
)以及值的总和的上限({{1} })。
max