如何随机化 "noise" 库的种子
How to randomize the seed of the "noise" library
我想用 Perlin Noise 创建一个 2D 浮点数列表。我希望每次 运行 程序生成的值都不同。但是,我不确定如何为我在 GitHub here.
上找到的噪声库提供随机种子
如何让程序在每次 运行 时生成不同的值?
我的代码:
from __future__ import division
import noise
import math
from singleton import ST
def create_map_list():
"""
This creates a 2D list of floats using the noise library. It then assigns
ST.map_list to the list created. The range of the floats inside the list
is [0, 1].
"""
# used to normalize noise to [0, 1]
min_val = -math.sqrt(2) / 2
max_val = abs(min_val)
map_list = []
for y in range(0, ST.MAP_HEIGHT):
row = []
for x in range(0, ST.MAP_WIDTH):
nx = x / ST.MAP_WIDTH - 0.5
ny = y / ST.MAP_HEIGHT - 0.5
row.append((noise.pnoise2(nx, ny, 8) - min_val) / (max_val - min_val))
map_list.append(row )
ST.map_list = map_list
噪声库不支持种子。在实际状态下,您不能随机输出。
但是,已经发布了一个 pull request 来解决这个问题。
为此,您必须在获得修改后的代码后重建库。 (python setup.py install
)
一个简单的方法是在噪声函数中将随机数加到 x
和 y
上,这样您也可以使用 random.seed()
。我正在从事 Minecraft 世界生成项目,并且正在使用噪音。
我想用 Perlin Noise 创建一个 2D 浮点数列表。我希望每次 运行 程序生成的值都不同。但是,我不确定如何为我在 GitHub here.
上找到的噪声库提供随机种子如何让程序在每次 运行 时生成不同的值?
我的代码:
from __future__ import division
import noise
import math
from singleton import ST
def create_map_list():
"""
This creates a 2D list of floats using the noise library. It then assigns
ST.map_list to the list created. The range of the floats inside the list
is [0, 1].
"""
# used to normalize noise to [0, 1]
min_val = -math.sqrt(2) / 2
max_val = abs(min_val)
map_list = []
for y in range(0, ST.MAP_HEIGHT):
row = []
for x in range(0, ST.MAP_WIDTH):
nx = x / ST.MAP_WIDTH - 0.5
ny = y / ST.MAP_HEIGHT - 0.5
row.append((noise.pnoise2(nx, ny, 8) - min_val) / (max_val - min_val))
map_list.append(row )
ST.map_list = map_list
噪声库不支持种子。在实际状态下,您不能随机输出。
但是,已经发布了一个 pull request 来解决这个问题。
为此,您必须在获得修改后的代码后重建库。 (python setup.py install
)
一个简单的方法是在噪声函数中将随机数加到 x
和 y
上,这样您也可以使用 random.seed()
。我正在从事 Minecraft 世界生成项目,并且正在使用噪音。