Niedawno próbowałem pokonać jedną z moich głównych słabości w programowaniu, generowaniu przypadkowym. Myślałem, że to będzie łatwe, ale brak prostych informacji zabija mnie. Nie chcę brzmieć głupio, ale wydaje mi się, że większość informacji z miejsc takich jak this jest napisana dla matematyków, którzy poszli na studia, aby ukończyć matematykę teoretyczną. Po prostu nie rozumiem, co mam zrobić z tymi informacjami, aby zastosować je do programowania w języku takim jak Python.Generowanie map losowych w Pythonie z hałasem Perlin
Pracowałem przez kilka dni wpatrując się w równania i próbując próbować po próbie, ale po tych wszystkich dniach, po ponownym zgraniu kodu, wszystko, co działało poprawnie przez cały ten czas, jest generatorem szumów do generowanie podstawowej hałasu:
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='')
Ten kod produkuje ten wynik:
##-######--#--#-#--##-###-###---#-##-#-----#--##-#
#-#-##-##-#----##------##--#####-#-##---#--#-##---
-------#-#------#---#-#---###--#--#-###-----##-#--
######--#-#-#--####-###---#---###-##--#-#-##--####
-#----###--------##--##--##-#-#--#----###-####--##
---####-#--#--###-#-#--#--#####--####-#-##-##--#--
----#--####-#-#-#-#-#---#--###------###--#-######-
--###--#-###-------#-##--###---#-####----###-#####
#----##--##-#--##-###--#----#-#-##--##-#-##---###-
##---##----##--##--#--#--###-###-#--#-##---#------
-##----#-###---######---#-#---#---###---#---###-##
#--##-##-###-###---#--##-##--##-##-#-#-##--#-#-##-
ja chcąc go ostatecznie wyprodukować coś takiego:
--------------------------------------------------
------------------####----------------------------
-----------------#####----------------------------
----------------#####-----------------------------
---------------#####--------------###-------------
---------------#####--------------###-------------
---------------------------------####-------------
---######------------------------####-------------
---######------------###--------------------------
----########---------###--------------------------
-----#######---------###--------------------------
------###-----------------------------------------
Jak mogę wygładzić generowany przeze mnie biały szum i przekształcić go w wyspy? Czy ktoś może mi to wyjaśnić w bardzo prosty sposób?
Może myślę o tym wszystkim bardzo źle.
Chciałbym wziąć sugestię user1483482. Jeśli chcesz dowiedzieć się więcej o wewnętrznych działaniach, spróbuj zajrzeć tutaj: http://devmag.org.za/2009/04/25/perlin-noise/ Powieliłem jego kod w pythonie i działa, ale jest ** bardzo ** wolno, nawet z numpy. – seth