diff --git a/app/src/main/java/util/DistinctColorGenerator.java b/app/src/main/java/util/DistinctColorGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f00c7cd824a4e98128fbcdbbf2b707f0487cbd9
--- /dev/null
+++ b/app/src/main/java/util/DistinctColorGenerator.java
@@ -0,0 +1,30 @@
+package util;
+
+import javafx.scene.paint.Color;
+import model.Cell;
+import model.ColorGenerator;
+
+import java.util.List;
+
+public class DistinctColorGenerator implements ColorGenerator {
+    private List<Color> colors;
+    private Color defaultcolor;
+
+    public  DistinctColorGenerator(List<Color>colors,Color defaultcolor){
+            this.colors = colors;
+            this.defaultcolor = defaultcolor;
+    }
+
+    @Override
+    public Color nextColor(Cell cell) {
+        for(int i = 0;i< colors.size()-1;i++){
+           for (int j= 0;j<cell.getNeighbours().size()-1;j++){
+               if(colors.get(i)!= cell.getNeighbours().get(j).getColor()){
+                   return colors.get(i);
+               }
+           }
+        }
+
+        return defaultcolor;
+    }
+}
diff --git a/app/src/main/java/util/RandomColorGenerator.java b/app/src/main/java/util/RandomColorGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..1865fdff10bb2f7a6525988c96f11ef763ff166d
--- /dev/null
+++ b/app/src/main/java/util/RandomColorGenerator.java
@@ -0,0 +1,24 @@
+package util;
+
+import model.Cell;
+import model.ColorGenerator;
+import  javafx.scene.paint.Color;
+import java.util.List;
+import java.util.Random;
+
+public class RandomColorGenerator implements ColorGenerator {
+    private List<Color> colors;
+    private Random randomGenerator;
+
+
+    public RandomColorGenerator(List<Color> colors, Random randomGenerator){
+        this.colors = colors;
+        this.randomGenerator =randomGenerator;
+    }
+
+    @Override
+    public Color nextColor(Cell cell) {
+        return colors.get(randomGenerator.nextInt(colors.size()));
+    }
+
+}
diff --git a/app/src/main/java/util/RandomUtil.java b/app/src/main/java/util/RandomUtil.java
index 8bd2ec4663d1d4036df5bf59cd8fbe0b9e94b3b7..abbbef7f42dbab434d4cbec1eefcfb90906956d9 100644
--- a/app/src/main/java/util/RandomUtil.java
+++ b/app/src/main/java/util/RandomUtil.java
@@ -12,10 +12,10 @@ public class RandomUtil {
     }
 
     public static <T> T randomElement(T[] elements, Random random){
-        return elements[random.nextInt(elements.length-1)];
+        return elements[random.nextInt(elements.length)];
     }
 
     public static <T> T randomElement(List<T> elements, Random random){
-        return elements.get(random.nextInt(elements.size()-1));
+        return elements.get(random.nextInt(elements.size()));
     }
 }