我正在编写一种算法,根据输入数字生成0到127之间的4个值。它看起来像这样:
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,则值[4]将变为2799996.使用我的方法将其减少到低于127的数字需要相当长的时间。有一个更好的方法吗? 任何和所有建议将不胜感激!
答案 0 :(得分:1)
Modulo解决了我的问题。我不知道这是件事;我最好重拍数学。 while循环不在窗口中,新代码如下所示:
for i = 1, 4 do
value[i] = value[i] % 128
end
就这么简单,谢谢Sami Kuhmonen!