Никак не модифицировал качественно кода, только логически:
void Start()
{
anim = transform.GetChild(Random.Range(0, transform.childCount)).gameObject.GetComponent<Animation>(); //Изменил диапазон рандома
Debug.Log(transform.childCount);
anim.Play(a.name);
}
Сначала нужно выбрать рандомный элемент с аниматрором, получить у этого элемента аниматор и только потом
запустить анимацию (в коде вопроса непонятно что творится - у GameObject'a берётся поле, которого изначально нет в Unity.).
P.S. Такой код опасен, поскольку есть куча моментов, где может запросто словть nullreference
P.S.S. Этот скрипт вешается на родителя. Родитель выбирает элемент, на котором запустить анимацию.