c# - 如何将总数除以给定因素和下限?

标签 c# algorithm math distribution boundary

我想问:

  • 我有任何正整数,比方说:10
  • 然后我得到随机整数(它们也是随机计数),比方说:5, 7, 8
  • 我想计算 float ,例如:5*x + 7*x + 8*x = 10
  • 我现在知道了,但我希望它具有共同的下限(比如 3),例如:

5 * x > 3
7 * x > 3
8 * x > 3

  • 可以纠正数字(比率)以达到这种状态,因此在这个特定示例中它将是这样的:
sum = 5 + 7 + 8 = 20
x = 10 (total) / 20 (sum)
x = 0.5

results: 5*0.5 + 7*0.5 + 8*0.5 = 2.5 + 3.5 + 4 = 10 (total)

到目前为止一切顺利,但 2.5 现在低于给定的最小值。限制3,那么如何解决呢!

这可能吗,如果可能的话,怎么做到的? (最好在 C# 中)

最佳答案

让我们以您的示例为例,看看我们将如何解决它。

我应该将 5x 7x 8x 的使用更改为 5x 7y 8z 的使用,因为已经决定这些必须更改以满足要求,因此不会全部相同。

So currently you get a total answer of 10 by having 

5 times 0.5 = 2.5
7 times 0.5 = 3.5
8 times 0.5 = 4

但是,5 乘以 0.5 不大于 3

因此要使 5 倍 x 至少为 3,我们必须将总数增加 0.5

3(你至少想要的数字)- 2.5(你有的数字)是 0.5

因此 TOTAL 必须增加 0.5。

x must = 3 的 5 倍我们可以看到 x must = 3 除以 5 得到 0.6

now lets recalculate your sum

5 times 0.6 = 3
7 tiems 0.5 = 3.5
8 times 0.5 = 4

加在一起 ​​= 10.5...啊,真棒。

好的所以我们可以看到 y 或 z 必须变小以确保答案仍然正好是 10

所以让我们选择 8 次 z = 4(因为 4 是 3 的进一步,并且会给我们最大的背风)

0.5 除以 8 = 0.0625

所以 z 必须减少 0.0625 才能抵消 5 倍 x 增加 0.5

所以 z 现在 = 0.5 - 0.0625 即 0.4375

lets redo your sum with these new numbers!

5 times 0.6 = 3
7 times 0.5 = 3.5
8 times  0.4375 = 3.5

3 加 3.5 加 3.5 = 10!我们成功了!呀呀呀

希望对您有所帮助!如果不是很好,我还是喜欢这样做 :D

总而言之,我们必须增加 x 以使 5x 至少为 3,但 x 的增加意味着答案大于 10,因此无论总增加量是多少,y 或 z 都必须减少以抵消这一点,我们这样做增加除以其他数字之一,计算出我们需要从 z 或 y 中减去多少才能再次 = 完美的 10

关于c# - 如何将总数除以给定因素和下限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536765/

相关文章:

c# - 具有可变输入参数数量的 MSBuild 自定义任务

c# - 如何在启动程序和禁用 UAC 时强制提示输入凭据?

python - 将 float 比率转换为整数

c - 在 C 中帮助数学

c# - 获取 DataGridView 复选框单元格值?

c# - 管理托管 (C#) 和非托管 (C++) 对象的析构函数

python - 给定一个数组,查找元素对,其总和等于给定的总和,并返回它们索引的总和

algorithm - 对于给定的 n,如何从 1..n 中取数字的异或? (例如 1^2^3^...^n)?

algorithm - 基于标签的聚类算法

algorithm - 找到一组覆盖在 3D 高度图上的圆的点