你不能只对星系 ID 进行 SHA1,例如:
银河一号
Sha1(1) = 356a192b7913b04c54574d18c28d46e6395428ab
银河 2
Sha1(2) = da4b9237bacccdf19c0760cab7aec4a8359010b0
银河 3
Sha1(3) = 77de68daecd823babbb58edb1c8e14d7106e83bb
然后你可以分段代码,IE:
前 4 个字符 = 行星数量
356a
da4b
77de
您将需要某种字符串到数字的算法,一个简单的算法是获取每个非数字字符的 ASCII 码,然后将它们全部相乘或其他东西。
那么现在我们知道我们的银河系中有多少行星,那么银河系的 x,y,z 维度呢?
接下来 9 个字符 = Galaxy 尺寸 (x,y,z)
原理同上,把代码变成大数。还要进行一些敏感性检查,您不想要一个 10milesx10milesx10miles 的星系,其中有 2000 万颗行星。有某种加权算法,例如最小大小是行星数 * 10000。您需要使用数字来确保范围都是兼容的,并且从哈希中选择的字符实际上会给您一个合理的范围。
或者,您可以用一个随机数代替这个,在星系的最小和最大大小之间选择一个数字,但使用一个恒定的 RNG 种子,例如星系 ID!这样,对于观察者来说,星系的大小基本上是“随机的”,但它们每次都是一样的。
等等等等!
这是获取宇宙属性的一种方式,但是行星属性呢?像人口和其他东西?
如果您拥有拥有 20,000 个行星的 Galaxy 1,您可以:
Sha1('1:340') = bc02ab36f163baee2a04cebaed8b141505cc26b5
也就是说,银河一号,行星 340。然后,您可以随意拼接该代码。使用哈希的好处是每个星球都应该有一个完全唯一的代码。