Math 如何推导一个伪随机数,给定一个父/种子数-这符合父数的所有标准
我需要一些数学方面的帮助。我正在从父种子值生成派生种子值 我需要导出一个y,给定一个x,它遵循以下规则Math 如何推导一个伪随机数,给定一个父/种子数-这符合父数的所有标准,math,random,lua,numbers,random-seed,Math,Random,Lua,Numbers,Random Seed,我需要一些数学方面的帮助。我正在从父种子值生成派生种子值 我需要导出一个y,给定一个x,它遵循以下规则 x=math.random(10009999) 对于给定的x,y是常数。即y=f(x) y不一定跟在x后面。当x增大时y不需要增大,当x减小时y不需要减小。 如果x=1234,在下一次迭代中,x=3456,那么y也不需要增长。事实上,y最好是一个伪随机数 y也在范围内(10009999) 早些时候,我使用了以下功能: y = tonumber(string.reverse(x)) 也就是说,
x=math.random(10009999)
y=f(x)
y = tonumber(string.reverse(x))
也就是说,如果x=1234
那么y=4321
但是,这两个数字之间存在直接的相关性,因此我的地形看起来过于对称。您可以将生成的
x
值传递回math.randomseed
函数。RNG将始终为传递给seed的x
的相同值生成相同的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
,您将始终返回。你甚至可以在上测试它,所以基本上你想要一个散列函数?不过,最终,你总是会得到一个直接的相关性,因为对于任何给定的x
,你会得到一个固定的y
。不确定它是否是一个散列函数。但是,是的,我希望输出y与x的坐标关系尽可能小。我所关心的一个函数是使用一个像pi一样的无限浮点。对于x=1000,取pi的前4位小数。对于x=1001,取下一个4,依此类推。如果任何输出小于100,则只需跳过1个字符并进行检查。由于pi是一个常数,因此x的值总是给出y的特定值。然而,这在实践中感觉非常令人畏惧,我不确定如何才能有效地实现这样的功能。我很没经验。我真的很喜欢这个。如此简单,完美地解决了我的问题。