我有一个 X x Y 表尺寸的动态范围,需要通过长时间运行的算法进行测试。
例如,我将尝试 40-50 英寸宽 x 40-80 英寸长之间的任何纸张尺寸。尝试每个整数组合需要很长时间,所以我想将迭代限制为 30。
由于 X 范围内只有 10 个单位,Y 范围内只有 40 个单位,因此我需要测试大约 3 个 X 单位和 10 个 Y 单位并跳过其余部分。
如何对其进行编码以找出最接近的比率并最终只进行 30 次迭代?它需要是动态的,因为这些范围不断变化,有时 Y 范围小于 X 范围。
答案:(受弗雷泽的启发)
Dim ratioX As Integer = txtSizeFormSingleXmax - txtSizeFormSingleXmin
Dim ratioY As Integer = txtSizeFormSingleYmax - txtSizeFormSingleYmin
Dim FinalRatioNumerator As Integer
Dim FinalRatioDenominator As Integer
Dim XGreaterThanY As Boolean = False
If ratioX > ratioY Then
Dim tempRatio As Integer
tempRatio = ratioY
ratioY = ratioX
ratioX = tempRatio
XGreaterThanY = True
End If
For countRatio As Integer = 1 To 30
If ratioX / ratioY <= countRatio / CInt(30 / countRatio) Then
FinalRatioNumerator = countRatio
FinalRatioDenominator = CInt(30 / countRatio)
Exit For
End If
Next