25 lines
812 B
Java
25 lines
812 B
Java
package com.baeldung.probability;
|
|
|
|
import org.assertj.core.data.Offset;
|
|
import org.junit.Test;
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
public class RandomInvokerUnitTest {
|
|
@Test
|
|
public void givenProbability_whenInvoked_invokeWithProbability() {
|
|
RandomInvoker randomInvoker = new RandomInvoker();
|
|
|
|
int numberOfSamples = 1_000_000;
|
|
int probability = 10;
|
|
int howManyTimesInvoked = Stream.generate(() -> randomInvoker.withProbability(() -> 1, () -> 0, probability))
|
|
.limit(numberOfSamples)
|
|
.mapToInt(e -> e).sum();
|
|
int monteCarloProbability = (howManyTimesInvoked * 100) / numberOfSamples;
|
|
|
|
assertThat(monteCarloProbability).isCloseTo(probability, Offset.offset(1));
|
|
}
|
|
}
|