unity random object from list
that's a good question. Randomly pick one item from a list is easy. You can simply do something like : myListOfItems[Random.Range(0, myListOfItems.Length)] // if it's an array myListOfItems[Random.Range(0, myListOfItems.Count)] // if it's a List But picking a given number of items from a list is a bit more interesting. Let me give this a try and explain through it. Let's begin with the method signature (our goal). public static List<T> GetRandomItemsFromList<T> (List<T> list, int number) This will be a generic method, with type T so that it can work with a list of anything. It will take a list, and a number of items to pick for parameters. Then, we want to duplicate the input list, so that we can remove items from it as we add them to a new list. Eventually, we want to return the new list. // this is the list we're going to remove picked items from List<T> tmpList = new List<T>(list); // this is the list we're going to move items to List<T> newList = new List<T>(); return newList; Now we want to loop and move items from one list to the other. // make sure tmpList isn't already empty while (newList.Count < number && tmpList.Count > 0) { int index = Random.Range(0, tmpList.Count); newList.Add(tmpList[index]); tmpList.RemoveAt(index); } So, here's the whole method : public static List<T> GetRandomItemsFromList<T> (List<T> list, int number) { // this is the list we're going to remove picked items from List<T> tmpList = new List<T>(list); // this is the list we're going to move items to List<T> newList = new List<T>(); // make sure tmpList isn't already empty while (newList.Count < number && tmpList.Count > 0) { int index = Random.Range(0, tmpList.Count); newList.Add(tmpList[index]); tmpList.RemoveAt(index); } return newList; } And this is how to use it : List<Item> randomItems = GetRandomItemsFromList<Item> (allItems, 5);