Cannot access last element of a list of GameObjects

As the title describes, I’m having trouble accessing the last element of a list.

I have a list here of gameobjects:

    List<GameObject> asteroidPrefabs = new List<GameObject>();

And an array of the objects which is assigned from the unity editor, say we have 8 of them:

    public GameObject[] asteroids;

And then I initialize the objects and add them to my asteroidPrefabs list:

        for (int i = 0; i < asteroids.Length - 1; i++)
        {
            asteroidPrefabs.Add(asteroids*);*

}
I initiate them in this function:
public void InstantiateAsteroid(Vector2 position, Quaternion rotation)
{
prefabIndex = Random.Range(0, asteroids.Length - 1);
Instantiate(asteroidPrefabs[prefabIndex], position, rotation);
}
Here’s the problem: When the randomizer picks the last element, which is 7 (because I have 8 objects assigned to the list).
It outputs this error:
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
So I cannot spawn my game object of the last element. Is there a way to fix this?

It should be:

for (int i = 0; i <= asteroids.Length - 1; i++)
{
    asteroidPrefabs.Add(asteroids*);*

}
OR
for (int i = 0; i < asteroids.Length; i++)
{
asteroidPrefabs.Add(asteroids*);*
}
With your current approach you are actually adding one element less meaning an index of 6 only.