import numpy as np import hashlib, struct _current_seed = 0 def set_seed(seed): """ Set the random seed to be used globally. If a string is supplied, it will be converted to int using hash(). This immediately seeds the numpy RNG. Any other RNGs must be seeded using current_seed() """ if isinstance(seed, str): seed = struct.unpack("=I", hashlib.md5(seed.encode("utf-8")).digest()[:4])[0] np.random.seed(seed) assert seed < 2 ** 64 # neuron RNG fails if seed is too large global _current_seed _current_seed = seed return seed def current_seed(): """ Return the currently-set global random seed. """ return _current_seed