Non Repetative Random.Range

Is it possible to randomize without repeating the same value again? As you can see in the below script, If I instantiate the game object from array, Game objects are repeating, I want the game object to be shuffled not repeated. Any help would be appreciated. Thanks in advance.

public GameObject[] answerPrefabs;  
	public Transform[]  spawnPos;

	public void Start()
	{
		for(int i = 0; i<spawnPos.Length; i++)
		{
			int answerClone= Random.Range(0,answerPrefabs.Length);	
			Instantiate(answerPrefabs[answerClone],spawnPos_.position,spawnPos*.rotation);*_

* }*
* }*

A possibility to remove the instantiated element from array. I would suggest to use System.Collections.Generic.List<T> instead. Try like this:

 public List<GameObject> answerPrefabs;  
 public List<Transform>  spawnPos;
 
 public void Start()
 {
      for(int i = spawnPos.Length - 1; i >= 0; i--)
      {
         int answerClone= Random.Range(0, answerPrefabs.Count);    
         Instantiate(answerPrefabs[answerClone],spawnPos_.position,spawnPos*.rotation);*_

// Remove the instantiated element from list.
answerPrefabs.RemoveAt(answerClone);
spawnPos.RemoveAt(answerClone);
}
}
Hope it helps!