I want to create a 2D list of floats with Perlin Noise. I would like the values generated to be different every time I run the program. However, I'm not sure how to provide randomized seeds for the noise library I found on GitHub here.
How can I make the program generate different values every time it's run?
My Code:
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
The noise library do not support seed. At actual state, you cannot have random output.
But, one pull request has been posted to fix this point.
To do so, you will have to rebuild the library once you get the modified code. (python setup.py install
)