第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Swift中生成一個隨機數(shù)而不重復以前的隨機數(shù)?

如何在Swift中生成一個隨機數(shù)而不重復以前的隨機數(shù)?

吃雞游戲 2019-11-04 10:02:59
我對Swift和編程邏輯很陌生,所以請多多包涵如何在Swift中生成0到9之間的隨機數(shù)而不重復最后生成的數(shù)字?因為相同的數(shù)字不會連續(xù)出現(xiàn)兩次。
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

Swift 5更新


這是一個很好的技巧,可以從以前不僅僅選擇的數(shù)字中進行平均選擇。


您有10個數(shù)字,但只想從9個數(shù)字中選擇(0到9,但不包括前一個數(shù)字)。如果將范圍減少1,則可以從9個隨機數(shù)中進行選擇,然后將重復的數(shù)字替換為該范圍的前一個最高數(shù)字。這樣,您每次只需生成一個隨機數(shù)即可獲得統(tǒng)一性。


這可以Int.random(in:excluding:)在傳遞所需值的位置實現(xiàn)exclude。


extension Int {

    static func random(in range: ClosedRange<Int>, excluding x: Int) -> Int {

        if range.contains(x) {

            let r = Int.random(in: Range(uncheckedBounds: (range.lowerBound, range.upperBound)))

            return r == x ? range.upperBound : r

        } else {

            return Int.random(in: range)

        }

    }

}

例:


// Generate 30 numbers in the range 1...3 without repeating the

// previous number  

var r = Int.random(in: 1...3)

for _ in 1...30 {

    r = Int.random(in: 1...3, excluding: r)

    print(r, terminator: " ")

}

print()

1 3 2 1 2 1 3 2 1 3 1 3 2 3 1 2 3 2 1 3 2 1 3 1 2 3 2 1 2 1 3 2 3 2 1 3 1 2 1 2


上一個答案:


var previousNumber = arc4random_uniform(10)   // seed the previous number


func randomNumber() -> UInt32 {

    var randomNumber = arc4random_uniform(9)  // generate 0...8

    if randomNumber == previousNumber {

        randomNumber = 9

    }

    previousNumber = randomNumber

    return randomNumber

}


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 692 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號