Random 两个种子的随机值

Random 两个种子的随机值,random,random-seed,Random,Random Seed,有一个二维网格,需要该网格上每个整数坐标都有一个可复制的随机值。此值应尽可能唯一。在1000 x 1000的网格中,它不应该出现两次 更数学化地说:我需要一个函数f(x,y),它给出一个唯一的数字,不管x和y是什么,只要它们都在[0,1000]范围内 f(x,y)必须是可复制的,并且没有副作用 也许有一些简单的解决方案,但我想到的一切,比如x和y的乘积,加一些盐,等等,都不会导致任何结果,因为结果数字很容易出现多次。 我得到的一个有效解决方案是使用随机化器并简单地计算网格中的所有值,但这太过繁重

有一个二维网格,需要该网格上每个整数坐标都有一个可复制的随机值。此值应尽可能唯一。在1000 x 1000的网格中,它不应该出现两次

更数学化地说:我需要一个函数f(x,y),它给出一个唯一的数字,不管x和y是什么,只要它们都在[0,1000]范围内

f(x,y)必须是可复制的,并且没有副作用

也许有一些简单的解决方案,但我想到的一切,比如x和y的乘积,加一些盐,等等,都不会导致任何结果,因为结果数字很容易出现多次。 我得到的一个有效解决方案是使用随机化器并简单地计算网格中的所有值,但这太过繁重(无法在每次需要一个值时执行),或者在我的情况下需要太多内存(我希望避免预计算所有值)

有什么建议吗?
非常感谢。

我将使用x和y的零填充连接作为内置随机生成器的种子。在我目前的一些实验中,我实际上使用了类似的东西

也就是说,
x=13,y=42
将变成
int('0013'+'0042')=130042
,用作随机种子。然后,您可以使用您选择的随机生成器来获取所需值的种类(float、int等)和范围:

Python 3.6+中的示例:

import numpy as np
from itertools import product

X = np.zeros((1000, 1000))
for x, y in product(range(1000), range(1000)):
    np.random.seed(int(f'{x:04}{y:04}'))
    X[x, y] = np.random.random()

网格中的每个值都是随机生成的,但可以独立复制。

请查看并@FarhadMehrad感谢您的建议,但据我所知,这需要将1000 x 1000的值保留在内存中,这是我希望避免的。是的,当然这是一个需要保留的大量数据,但这比在运行时生成数百万个唯一值要好得多。假设您需要生成10个唯一的数字,无法估计您应该尝试生成它们的次数。哦,这太聪明了!简单、聪明、整洁。这可能就是解决方案,谢谢!可能会将问题标记为已解决。