Search code examples
pythonpython-2.7perlin-noisenoise-generator

How to randomize the seed of the "noise" library


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

Solution

  • 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)