gpt4 book ai didi

使用 Perlin 噪声生成 Python 随机 map

转载 作者:太空狗 更新时间:2023-10-29 21:17:31 25 4
gpt4 key购买 nike

最近,我一直在尝试克服我在一般编程中的主要弱点之一,即随机生成。我认为这将是一件容易的事,但缺乏简单的信息让我难以接受。我不想听起来很蠢,但我觉得大多数信息都来自 this 这样的地方。是为上大学攻读理论数学专业的数学家而写的。我只是不明白我打算如何处理这些信息,以便将其应用于使用 Python 等语言进行编程。

我已经工作了几天盯着方程式并尝试一次又一次的尝试,但在所有这些天之后,在一次又一次地撕开我的代码之后,整个时间里一直正常工作的就是这个噪音发生器产生基本噪声:

import random
import math

random.seed(0)

def generateWhiteNoise(width,height):
noise = [[r for r in range(width)] for i in range(height)]

for i in range(0,height):
for j in range(0,width):
noise[i][j] = random.randint(0,1)

return noise

noise = generateWhiteNoise(50,12)

for i in noise:
print()
for o in i:
if(o == 0):
print('-',end='')
else:
print('#',end='')

此代码产生以下结果:

##-######--#--#-#--##-###-###---#-##-#-----#--##-#
#-#-##-##-#----##------##--#####-#-##---#--#-##---
-------#-#------#---#-#---###--#--#-###-----##-#--
######--#-#-#--####-###---#---###-##--#-#-##--####
-#----###--------##--##--##-#-#--#----###-####--##
---####-#--#--###-#-#--#--#####--####-#-##-##--#--
----#--####-#-#-#-#-#---#--###------###--#-######-
--###--#-###-------#-##--###---#-####----###-#####
#----##--##-#--##-###--#----#-#-##--##-#-##---###-
##---##----##--##--#--#--###-###-#--#-##---#------
-##----#-###---######---#-#---#---###---#---###-##
#--##-##-###-###---#--##-##--##-##-#-#-##--#-#-##-

我希望它最终产生这样的东西:

--------------------------------------------------
------------------####----------------------------
-----------------#####----------------------------
----------------#####-----------------------------
---------------#####--------------###-------------
---------------#####--------------###-------------
---------------------------------####-------------
---######------------------------####-------------
---######------------###--------------------------
----########---------###--------------------------
-----#######---------###--------------------------
------###-----------------------------------------

我怎样才能设法消除我产生的白噪声,并将其变成孤岛?任何人都可以用非常简单的方式为我解释一下吗?

我可能在想所有这些都是非常错误的。

最佳答案

您问题的直接答案是“不,您不能按照您的要求去做”,第二个答案是“是的,您的想法全错了”。

原因是您正在生成完全随机的噪声。您要的是相干噪声。它们是两种完全不同的动物,您无法从随机噪声中获得相干噪声。因此我的答案。

要解释原因,您必须理解我从 excellent libnoise documentation 中重复的这个简单陈述。 :


相干噪声

一种平滑的伪随机噪声。

相干噪声由相干噪声函数生成,它具有三个重要属性:

  • 传入相同的输入值将始终返回相同的输出值。
  • 输入值的微小变化会导致输出值的微小变化。
  • 输入值的较大变化会导致输出值的随机变化。

随机噪声不具备这些属性,因此完全不适合您要实现的目标。

我建议学习 Ken Perlin's latest (improved) reference implementation和他的 SIGGRAPH 2002笔记。

如果您无法理解或实现它,那么只需使用一个库,例如 libnoise ,一个优秀且使用良好的 LGPL 库,最初使用 C++,也被移植到许多其他语言。

关于使用 Perlin 噪声生成 Python 随机 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779480/

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