Is it possible to grab an index in a List by random as in arrays?

I'm using a list to find and store a gameobjects child transforms in. I use a list mainly because I don't want all childs of the go, only the ones taged "Detachable" and for some go's that use the script they are quite a few so would be a pain adding them in the inspector.

Anyways, I now want to add the code to pick a random index from the list and add it to a new object kinda like:

Transform _detach = _myArray[Random.Range(1, _myArray.Length);

Is it possible to do something similar to this with a List?

Yes, you'd want something like:

List<Transform> _myList = ...;
Transform _detach = _myList[Random.Range( 0, _myList.Count )];

i.e. Lists have "Count" instead of "Length".

Also note that the lower bound on the Random Range is 0, not 1 (which should be the case in yours too).

And finally, note that the upper bound on Random Range is exclusive for the integer version (different than the float version) so the maximum it would return is Count - 1.

Change `_myArray.Length` to `_myArray.Count`. See the documentation for List here.

Also, you should probably change your variable name from `_myArray` to something that makes sense for what you're using it for (note: `_myList` isn't really any more descriptive) so we have an idea that you've actually declared a List and not an array. Even more helpful, posting the error message you receive from code you've posted (in this case it would be "'Length' is not a member of System.Collections.Generic.List" or some such) would help people diagnose problems more easily.