fixes non-deterministic selection of enabled transitions
[petrinet.git] / src / main / java / de / yasc / example / petrinet / Petrinet.java
index f8882f2..994a037 100644 (file)
@@ -74,7 +74,7 @@ public final class Petrinet {
         if (enabledTransitions.isEmpty()) {
             return false;
         } else {
-            transitions.get(prng.nextInt(enabledTransitions.size())).fire();
+            enabledTransitions.get(prng.nextInt(enabledTransitions.size())).fire();
             return true;
         }
     }
@@ -92,7 +92,7 @@ public final class Petrinet {
     public Integer[] getMarking() {
         final var marking = new ArrayList<Integer>();
         for (int p = 0 ; p < places.length ; p++) {
-            Collections.nCopies(places[p].tokens, p).forEach(marking::add);
+            marking.addAll(Collections.nCopies(places[p].tokens, p));
         }
         return marking.toArray(new Integer[0]);
     }