如何导出一个伪随机数,给定一个 parent/seed 数字 - 符合父数字的所有标准
How to derive a pseudo random number, given a parent/seed number - which fits all criteria the parent number has
我需要一些数学方面的帮助。我正在从父种子值生成派生种子值。
我需要根据给定的数字 x 推导出一个数字 y,它遵循以下规则。
x = math.random(1000, 9999)
- 对于给定的 x,y 是常数。 IE。
y = f(x)
- y 不一定跟在 x 之后。即当x 增长时y 不需要增长,而当x 减少时y 不需要减少。
例如。如果 x = 1234 并且在下一次迭代中
x = 3456
那么 y 也不需要增长。事实上 y 最好是一个伪随机数。
- y 也在 (1000, 9999) 范围内
早些时候我去了以下功能:
y = tonumber(string.reverse(x))
即。如果 x = 1234
那么 y = 4321
然而,这两个数字之间存在直接相关性,因此我的地形看起来太对称了。
您可以将 x
的生成值传递回 math.randomseed
函数。对于传递给种子的 x
的相同值,RNG 将始终生成相同的 y
值。
所以,类似于:
math.randomseed(os.time())
local r = math.random
local x = r(1000, 9999)
math.randomseed(x)
local y = r(1000, 9999)
测试它是否有效,例如,您可以使用 5668
作为种子(或 x
),对于 y
,您将始终返回 3612. You can even test it on https://lua.org/demo.html
我需要一些数学方面的帮助。我正在从父种子值生成派生种子值。
我需要根据给定的数字 x 推导出一个数字 y,它遵循以下规则。
x = math.random(1000, 9999)
- 对于给定的 x,y 是常数。 IE。
y = f(x)
- y 不一定跟在 x 之后。即当x 增长时y 不需要增长,而当x 减少时y 不需要减少。
例如。如果 x = 1234 并且在下一次迭代中
x = 3456
那么 y 也不需要增长。事实上 y 最好是一个伪随机数。 - y 也在 (1000, 9999) 范围内
早些时候我去了以下功能:
y = tonumber(string.reverse(x))
即。如果 x = 1234
那么 y = 4321
然而,这两个数字之间存在直接相关性,因此我的地形看起来太对称了。
您可以将 x
的生成值传递回 math.randomseed
函数。对于传递给种子的 x
的相同值,RNG 将始终生成相同的 y
值。
所以,类似于:
math.randomseed(os.time())
local r = math.random
local x = r(1000, 9999)
math.randomseed(x)
local y = r(1000, 9999)
测试它是否有效,例如,您可以使用 5668
作为种子(或 x
),对于 y
,您将始终返回 3612. You can even test it on https://lua.org/demo.html