diff --git a/amodem/equalizer.py b/amodem/equalizer.py index a8f3570..c14cef1 100644 --- a/amodem/equalizer.py +++ b/amodem/equalizer.py @@ -7,11 +7,11 @@ from amodem import sampling import itertools import random -_constellation = [1, 1j, -1, -1j] - class Equalizer(object): + _constellation = [1, 1j, -1, -1j] + def __init__(self, config): self.carriers = config.carriers self.omegas = 2 * np.pi * np.array(config.frequencies) / config.Fs @@ -20,7 +20,9 @@ class Equalizer(object): def train_symbols(self, length, seed=0, constant_prefix=16): r = random.Random(seed) - choose = lambda: [r.choice(_constellation) for j in range(self.Nfreq)] + # Use low-level randomness for cross-version compatibility. + random_symbol = lambda: self._constellation[r.getrandbits(2)] + choose = lambda: [random_symbol() for j in range(self.Nfreq)] symbols = np.array([choose() for _ in range(length)]) # Constant symbols (for analog debugging) symbols[:constant_prefix, :] = 1