如果在Swift中mod的总和> 10,如何更新数字

问题描述 投票:-2回答:1

如何得到A和B所以他们的mod的总和将小于10?我尝试了下面的代码,如果数字像15和12,它的全部设置。但如果像15和17这样的数字它会一直运行。这是我试过的代码

    a = Int.random(in: 10...100)
    b = Int.random(in: 10...100)
    c = a % 10
    d = b % 10

    while c + d > 10 {
        a = Int.random(in: 10...100)
        b = Int.random(in: 10...100)
    }


    print(a)
    print(b)
swift
1个回答
1
投票

cd永远不会在您的代码中更新。因此,如果在第一次拍摄时你没有得到ab,那么你将无限循环。您可以通过在while循环中更新它们来解决这个问题。或者,你可能会认为cd是在ab变化时计算的函数:

var a = Int.random(in: 10...100)
var b = Int.random(in: 10...100)

var c: () -> Int = { a % 10 }
var d: () -> Int = { b % 10 }

while c() + d() > 10 {
    a = Int.random(in: 10...100)
    b = Int.random(in: 10...100)
}

您还可以生成b,以便始终确保mod的总和小于或等于10:

var a = Int.random(in: 10 ... 100)
var b = Int.random(in: 1 ... 9) * 10 + Int.random(in: 0 ... 10 - a % 10)

使用此表达式,b将取10到99之间的值,而不是100.要调整上限,可以按如下方式定义b

var b = Int.random(in: 1 ... 10) * 10
b += b == 100 ? 0 : Int.random(in: 0 ... 10 - a % 10)
© www.soinside.com 2019 - 2024. All rights reserved.