diff --git a/flatland/envs/rail_generators.py b/flatland/envs/rail_generators.py
index 7d79c564616d2a96ce904a59ae7653bd9e9ac0ec..3983bb0dde9983ac8f3414373d160bc3faa31786 100644
--- a/flatland/envs/rail_generators.py
+++ b/flatland/envs/rail_generators.py
@@ -571,6 +571,17 @@ def sparse_rail_generator(max_num_cities: int = 5, grid_mode: bool = False, max_
 
         # reduce num_cities if less were generated in random mode
         num_cities = len(city_positions)
+
+        # Try with evenly distributed cities
+        if num_cities < 2:
+            city_positions, city_cells = _generate_evenly_distr_city_positions(max_num_cities, city_radius, width,
+                                                                               height)
+        num_cities = len(city_positions)
+
+        # Fail
+        if num_cities < 2:
+            warnings.warn("Initial parameters cannot generate valid railway")
+            return
         # Set up connection points for all cities
         inner_connection_points, outer_connection_points, connection_info, city_orientations = _generate_city_connection_points(
             city_positions, city_radius, rails_between_cities,