package rescuecore2.standard.kernel.comms; import java.util.Random; import rescuecore2.standard.messages.AKSpeak; /** Dropout noise completely zeroes a message with some probability. */ public class DropoutNoise implements Noise { private double p; private Random random; /** Construct a DropoutNoise object that will wipe out messages with some probability. @param p The probability of destroying a message. @param random The RNG to use. */ public DropoutNoise(double p, Random random) { this.p = p; this.random = random; } @Override public AKSpeak applyNoise(AKSpeak message) { if (random.nextDouble() >= p) { return message; } return new AKSpeak(message.getAgentID(), message.getTime(), message.getChannel(), new byte[0]); } }