Search code examples
arraysswiftrandomswift3

Randomly select 5 elements from an array list without repeating an element


I am currently trying to make an app for iOS but I can't get some simple code down. Basically I need to randomly select 5 elements from an array list without repeating an element. I have a rough draft, but it only displays one element.

Here is my code:

let array1 = ["salmon", "turkey", "salad", "curry", "sushi", "pizza"]

let randomIndex1 = Int(arc4random_uniform(UInt32(array1.count)))

print(array1[randomIndex1])

Solution

  • You can do it like this:

    let array1 = ["salmon", "turkey", "salad", "curry", "sushi", "pizza", "curry", "sushi", "pizza"]
    var resultSet = Set<String>()
    
    while resultSet.count < 5 {
        let randomIndex = Int(arc4random_uniform(UInt32(array1.count)))
        resultSet.insert(array1[randomIndex])
    }
    
    let resultArray = Array(resultSet)
    
    print(resultArray)
    

    A set can contain unique elements only, so it can't have the same element more than once.

    I created an empty set, then as long as the array contains less than 5 elements (the number you chose), I iterated and added a random element to the set.

    In the last step, we need to convert the set to an array to get the array that you want.