Убедитесь, что случайно сгенерированные числа в Swift отличаются [дубликаты]

Я генерирую числа от 1 до 52 (чтобы раздавать случайные игральные карты), однако я хочу убедиться, что ни одно из них не совпадает. Всего будет раздано максимум 17 карт, и они должны быть разными. Это не дубликат, так как ни один вопрос не отвечает, как проверять повторения в случайных числах более двух разных значений.

Вот сокращенная версия кода для удобства:

    let randomPlayerCard1 = Int(arc4random() % 52) // Generates random numbers
    let randomPlayerCard2 = Int(arc4random() % 52)
    let randomCentreCard1 = Int(arc4random() % 52)
    let randomCentreCard2 = Int(arc4random() % 52)
    let randomCentreCard3 = Int(arc4random() % 52)
    let randomCentreCard4 = Int(arc4random() % 52)
    let randomCentreCard5 = Int(arc4random() % 52)

    while randomPlayerCard1 == randomPlayerCard2  { /* I don't want to create "while" 
statement for every combination of 2 of the eventual 17 random values being equal*/

    }
    playerCard1.image = mapping[randomPlayerCard1]
    playerCard2.image = mapping[randomPlayerCard2]

Я также пробовал что-то вроде:

while randomPlayerCard1 == randomPlayerCard2 == randomCentreCard5 == randomCentreCard3

Но тебе не позволено сделать это, как я и ожидал.

Спасибо за любую помощь!


person RufusV    schedule 17.07.2016    source источник
comment
Я бы создал массив deck, инициализированный всеми 52 картами, и вытягивал бы из него случайные карты, генерируя случайное число и удаляя эту карту.   -  person Alexander    schedule 17.07.2016
comment
Я уже написал этот ответ, и вопрос был закрыт =/ pastebin.com/J8td637w   -  person Alexander    schedule 17.07.2016
comment
Вы утверждаете, что это не дубликат: поскольку ни один вопрос не отвечает, как проверять повторения в случайных числах более двух разных значений. Позвольте мне начать с того, что это не то решение, которое вы ищете. Удалив «дубликаты» в последовательности случайных чисел, вы сломались бы свойства распределения вашей псевдослучайной последовательности. Таким образом, правильное решение состоит в том, чтобы использовать случайную последовательность для перетасовки полной колоды (или массива). Обратитесь к связанному дубликату и ознакомьтесь со многими связанными вопросами для некоторого поучительного чтения.   -  person Disillusioned    schedule 17.07.2016