public INDArray genGaussianNoise(int id) { if (!currentNoise.containsKey(id)) { INDArray zeroMean = Nd4j.zeros(inputSize, outputSize); currentNoise.put(id, Sampling.normal(RandomUtils.getRandomGenerator(id), zeroMean, noiseVar)); } else { RealDistribution reals = new NormalDistribution( RandomUtils.getRandomGenerator(id), 0, noiseVarSqrt, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); INDArrayUtils.shiftLeft( currentNoise.get(id), inputSize, outputSize, RandomUtils.getRandomGenerator(id).nextInt(inputSize * outputSize), reals.sample()); } // currentNoise = Sampling.normal(RandomUtils.getRandomGenerator(id), zeroMean, noiseVar); return currentNoise.get(id); }