Randomly generate blocks on a flat map
I'm trying to randomly generate blocks on a flat map and make it so that they don't overlap each other. I have made a matrix (c# array) of the size of the map (500x500), the blocks have a scale between 1 and 5. The code works but if a generated block overlaps another one, it is destroyed and not regenerated somewhere else.
Only around 80 of the 1000 blocks I try to generate don't overlap another block.
Here is a picture of the map with around 80 blocks generated, the green squares are blocks

 void generateElement(int ratio, int minScale, int maxScale, GameObject g) {
     bool elementFound = false;
     for (int i = 0; i < ratio * generationDefault; i++) {
         GameObject el;
         // Randomly generate block size and position
         int size = Random.Range(minScale, maxScale + 1);
         int x = Random.Range(0, mapSizex + 1 - size);
         int y = Random.Range(0, mapSizey + 1 - size);
         
         // Check if there is already an element 
         for (int j = x; j < x + size; j++)
             for (int k = y; k < y + size; k++)
                 if (map[j][k] != null)
                     elementFound = true;
         if (elementFound)
             continue;
         else {
             el = (GameObject)Instantiate(g, new Vector3(x + (float)size / 2, (float)size / 2, y + (float)size / 2), Quaternion.Euler(0, 0, 0));
             el.transform.localScale *= size;
         }
         // Create element on map array
         for (int j = x; j < x + size; j++)
             for (int k = y; k < y + size; k++)  
                 if (map[j][k] == null) {
                     map[j][k] = el.GetComponent<ObjectInterface>();
                 }
     }
 }
I thought of 3 possible fixes
- I should set the size of the block depending of the place it has. 
- I should use another randomization algorithm. 
- I'm not doing this right. 
What do you think is the best idea ?
Your answer
 
 
             Follow this Question
Related Questions
how to randomly move each generated clone? 0 Answers
Random Scenes Without Repetition 1 Answer
Spawning with LayerMake 0 Answers
How to stop getting duplicate numbers while using random.range 1 Answer
I can see 3D text thru objects 0 Answers
