"While \u003e 127 减去 128" 的替代方案

我正在编写一个基于输入数字生成4个0到127之间值的算法。代码如下:

value = {}
input = number
mod = input * 2 - 1
value[1] = input - 1
value[2] = input - 1 + mod
value[3] = input - 1 + mod*2
value[4] = input - 1 + mod*3

为了保证生成的数字在更大的输入数下仍保持在0到127范围内,我加入了以下代码:

for i = 1, 4 do
while value[i] > 127 do
value[i] = value[i] - 128
end
end

这种方法虽然能够按预期工作,但随着生成的数字越来越大,这种方法的速度变得极慢。比如,如果输入数为400000,value[4] 将变成2799996。使用我的方法将它缩小到小于127需要花费相当长的时间。是否有更好的方法实现这一功能? 非常感谢任何和所有的建议!

点赞
用户9246461
用户9246461

Modulo 解决了我的问题。我一点都不知道它是个什么东西;我最好再学一遍数学。 while 循环被抛弃了,新代码看起来像这样:

for i = 1, 4 do
value[i] = value[i] % 128
end

如此简单,谢谢 Sami Kuhmonen!

2018-01-21 07:09:17