diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/PoissonSamplersPerformance.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/PoissonSamplersPerformance.java
index 278b63d..1aa2394 100644
--- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/PoissonSamplersPerformance.java
+++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/PoissonSamplersPerformance.java
@@ -549,7 +549,7 @@
          * Store the cumulative probability for all samples up to and including x.
          * This is F(x) = sum of p(X<=x).
          *
-         * <p>This table is initialised to store cumulative probabilities for x up to 2 * mean
+         * <p>This table is initialized to store cumulative probabilities for x up to 2 * mean
          * or 99.99% (whichever is larger).
          */
         private final double[] fx;
@@ -736,7 +736,7 @@
          * Store the cumulative probability for all samples up to and including x. This is
          * F(x) = sum of p(X<=x).
          *
-         * <p>This table is initialised to store cumulative probabilities for x up to 2 * mean
+         * <p>This table is initialized to store cumulative probabilities for x up to 2 * mean
          * or 99.99% (whichever is larger).
          */
         private final double[] cumulativeProbability;
diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/simple/SeedGenerationPerformance.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/simple/SeedGenerationPerformance.java
index 24a195e..d3c98df 100644
--- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/simple/SeedGenerationPerformance.java
+++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/simple/SeedGenerationPerformance.java
@@ -126,7 +126,7 @@
 
         /** No public construction. */
         private ThreadLocalRNG() {
-            // Do nothing. The seed could be initialised here.
+            // Do nothing. The seed could be initialized here.
         }
 
         @Override
@@ -158,7 +158,7 @@
 
         /** No public construction. */
         private ThreadLocalSplitMix() {
-            // Do nothing. The seed could be initialised here.
+            // Do nothing. The seed could be initialized here.
         }
 
         @Override
@@ -190,7 +190,7 @@
 
         /** No public construction. */
         private ThreadLocalSequence() {
-            // Do nothing. The seed could be initialised here.
+            // Do nothing. The seed could be initialized here.
         }
 
         @Override
diff --git a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
index 6ed4dd5..a2bd862 100644
--- a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
+++ b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
@@ -597,7 +597,7 @@
         private long nextReportTimestamp;
 
         /**
-         * Create a new instance. The total number of tasks must be initialised before use.
+         * Create a new instance. The total number of tasks must be initialized before use.
          *
          * @param parallelTasks The number of parallel tasks.
          */
@@ -802,7 +802,7 @@
             Arrays.sort(sortedDurations, 0, completed);
 
             // Return median of small lists. If no tasks have finished this returns zero.
-            // as the durations is zero initialised.
+            // as the durations is zero initialized.
             if (completed < 4) {
                 return sortedDurations[completed / 2];
             }
