gpt4 book ai didi

python - 连续输入序列的简单哈希,输出中没有可见的循环

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:14 28 4
gpt4 key购买 nike

在简单的基于图 block 的图像中,如果草的每个区域在每个方格上重复相同的草图 block ,它看起来像可怕的莫尔图案,但如果三到四个草图 block 交替出现,它看起来出奇的自然。

产生此效果的最佳方法是通过其坐标的简单散列来选择每个图 block 。 (另一种可能的实现是在游戏开始时随机选择它们,但如果可能的话我更喜欢哈希函数。)

哈希函数的必要属性是:

  • 尽可能快(最好是 x+y mod N),不需要加密属性
  • 输出中没有可见的周期:例如。 x+y mod N 失败,因为它总是在每一行重复相同的 N 个图 block

是否有一个简单的算术哈希可以工作,并且比“seed(coords); return randomrange(N)”更简单,但如果输入是“(0,0)”,“(1,0)” ,“(2,0)”...输出中没有可见的模式?

在游戏开始时生成一些随机数据来使用是不是更好?

最佳答案

我会尝试类似的事情

hash(coords) % number_of_tiles

Python 的内置 hash() 函数并不是真正的伪随机行为,但对于这个目的来说,它可能已经足够好了。

这是一个包含 7 个图 block 的示例:

>>> for x in range(10):
... for y in range(10):
... print ".oO^v<>"[hash((x, y)) % 7],
... print
...
O < o v . ^ > O > O
. v o < < O > ^ v o
< o > O . ^ o v O <
^ . O > o < . v > ^
o v . ^ ^ > O < v .
> ^ . v o < O > O >
. ^ o v < o > O v .
< O v o . v > ^ O >
v . ^ > O < o v . ^
O > ^ . . v o < < O

关于python - 连续输入序列的简单哈希,输出中没有可见的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541505/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com