creating unknown count of prefabs

hello,

I’m a newbie in unity.

I want to randomly spawn an unknown count of objects.
What is the best way to do this?

If I do this :

private int numberOfFlowers = 20;
public GameObject[] flower;

void Start()
{
    SpawnFlowers();   
}

private void SpawnFlowers()
{
    float randomX = Random.Range(-xSpawn, xSpawn);
    float randomZ = Random.Range(-zSpawn, zSpawn);

    Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);

    for (int index = 0; index < numberOfFlowers; index++)
    {
        Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
    }
}

I still have to assign the object in unity to the script. In this code assign 20 objects.
What If I want to increase the count of objects?
How do I programmaticly assign an object and not in unity?

I’m not sure I understand correctly but you can pass flower count as a parameter, you have to randomize floverCount value before passing.

public GameObject[] flower;
void Start()
{
    SpawnFlowers(); 
}
private void SpawnFlowers(int flowerCount)
{
    float randomX = Random.Range(-xSpawn, xSpawn);
    float randomZ = Random.Range(-zSpawn, zSpawn);
    Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);
    for (int index = 0; index < flowerCount; index++)
    {
        Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
    }
}

Or you can randomize numberOfFlowers

private int numberOfFlowersMin = 20;
private int numberOfFlowersMax = 20;
public GameObject[] flower;
void Start()
{
    SpawnFlowers(); 
}
private void SpawnFlowers()
{
    float randomX = Random.Range(-xSpawn, xSpawn);
    float randomZ = Random.Range(-zSpawn, zSpawn);
    int flowerCount = Random.Range(numberOfFlowersMin,numberOfFlowersMax);
    Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);
    for (int index = 0; index < flowerCount; index++)
    {
        Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
    }
}