Недавно я пытался победить одну из моих основных недостатков в программировании в целом, случайное поколение. Я думал, что это будет легко сделать, но отсутствие простой информации убивает меня. Я не хочу казаться глупым, но мне кажется, что большая часть информации из таких мест, как this, написана для математиков, которые поступили в колледж, чтобы закончить теоретическую математику. Я просто не понимаю, что я должен делать с этой информацией, чтобы применить ее к программированию на языке, таком как python.Python Случайное создание карты с шумом Perlin
Я работаю несколько дней, глядя на уравнения и пытаясь попытаться после попытки, но все же после всех этих дней, после разрыва моего кода снова и снова, все, что работало правильно все это время, - это генератор шума генерировать основной шум:
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='')
этот код производит этот результат:
##-######--#--#-#--##-###-###---#-##-#-----#--##-#
#-#-##-##-#----##------##--#####-#-##---#--#-##---
-------#-#------#---#-#---###--#--#-###-----##-#--
######--#-#-#--####-###---#---###-##--#-#-##--####
-#----###--------##--##--##-#-#--#----###-####--##
---####-#--#--###-#-#--#--#####--####-#-##-##--#--
----#--####-#-#-#-#-#---#--###------###--#-######-
--###--#-###-------#-##--###---#-####----###-#####
#----##--##-#--##-###--#----#-#-##--##-#-##---###-
##---##----##--##--#--#--###-###-#--#-##---#------
-##----#-###---######---#-#---#---###---#---###-##
#--##-##-###-###---#--##-##--##-##-#-#-##--#-#-##-
Я хотел это в конечном счете, производить что-то вроде этого:
--------------------------------------------------
------------------####----------------------------
-----------------#####----------------------------
----------------#####-----------------------------
---------------#####--------------###-------------
---------------#####--------------###-------------
---------------------------------####-------------
---######------------------------####-------------
---######------------###--------------------------
----########---------###--------------------------
-----#######---------###--------------------------
------###-----------------------------------------
Как я могу сгладить генерируемый белый шум и превратить его в острова? Может ли кто-нибудь объяснить это очень упрощенным способом для меня?
Возможно, я думаю обо всем этом очень неправильно.
Я бы принял предложение user1483482. Если вы хотите узнать больше о внутренней работе, попробуйте посмотреть здесь: http://devmag.org.za/2009/04/25/perlin-noise/ Я воспроизвел его код на python, и он работает, но это ** очень ** медленно, даже с numpy. – seth