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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

米琪卡哇伊 2019-10-23 12:38:27
我對(duì)Swift和編程邏輯很陌生,所以請(qǐng)多多包涵如何在Swift中生成0到9之間的隨機(jī)數(shù)而不重復(fù)最后生成的數(shù)字?因?yàn)橄嗤臄?shù)字不會(huì)連續(xù)出現(xiàn)兩次。
查看完整描述

3 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

Swift 5更新


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


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


這可以Int.random(in:excluding:)在傳遞所需值的位置實(shí)現(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


上一個(gè)答案:


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

}


查看完整回答
反對(duì) 回復(fù) 2019-10-23
  • 3 回答
  • 0 關(guān)注
  • 840 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)