arrays - 如何通过与swift中的另一个元素数组进行比较来从元素数组生成随机字符串?

标签 arrays swift swift3

我知道从字符串中获取随机字符。来自here的是代码,

func randomString(_ length: Int) -> String {

    let master = Array("abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ_123456789".characters) //0...62 = 63
    var randomString = ""

    for _ in 1...length{

        let random = arc4random_uniform(UInt32(master.count))
        randomString.append(String(master[Int(random)]))
    }
    return randomString
}

用法:

var randomArray1 = [String]()

for _ in 0...62{

   randomArray1.append(self.randomString(1))
}

这里,如果randomArray1.append(self.randomString(x)),那么x = 1...N

检查重复元素:

var sameElementCatcher = [String]()

for x in 0...62{

    let element = randomArray1[x]
    randomArray1[x] = ""
    if randomArray1.contains(element){
        sameElementCatcher.append(element)
    }
}

print("Same Elements")
print(sameElementCatcher.count != 0 ? sameElementCatcher : "Array count is zero")

输出:

Same Elements

["_", "u", "8", "7", "E", "P", "u", "y", "C", "-", "C", "x", "l", "j", "t", "D", "U", "2", "e", "2"]

但我需要通过与 randomArray1 进行比较,从 master 获取 62 个唯一随机字符的数组。即,数组计数为零

我怎样才能毫不拖延地实现这一目标?

注意:

此外,我还阅读了 this 帖子,我还有一个用于改组数组的 answer。但这篇文章与仅洗牌不同,请参阅用法

最佳答案

你试过吗? 我从你的问题中了解到的。 生成一个所有字符都是唯一的随机文本。 在将随机字符串附加到数组之前,检查数组是否具有 char 然后附加到数组中。

func randomString(_ length: Int) -> String {
let master = Array("abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ_123456789".characters) //0...62 = 63
var randomString = ""

for _ in 1...length{

    let random = arc4random_uniform(UInt32(master.count))
    randomString.append(String(master[Int(random)]))
}
return randomString
}

var randomArray1 = [String]()
var tempRandomString = ""
let totalRandomCount = 62
var randomArrayCount = 0

while (totalRandomCount > randomArrayCount) {
    tempRandomString = randomString(1)
    if !randomArray1.contains(tempRandomString) {
        randomArray1.append(tempRandomString)
        randomArrayCount+=1
    }
}
print(randomArray1)

输出:["X", "u", "j", "1", "n", "E", "D", "q", "U", "6", "T", "O", "f", "J", "i", "c", "W", "V", "G", "R", "k", "7", "_", "8", "-", "l", "w", "4", "e", "Q", "C", "m", "M", "Y", "o", "S”、“B”、“2”、“Z”、“P”、“p”、“N”、“y”、“H”、“a”、“h”、“z”、“s” , "b", "A", "3", "g", "x", "L", "v", "F", "d", "r", "t", "K", "9", "5"]

我在 playground 上试过了。对于此输出,执行了 199 次循环。

如果有人比这更了解,请更新您的信息。

关于arrays - 如何通过与swift中的另一个元素数组进行比较来从元素数组生成随机字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540858/

相关文章:

ios - 手动布局中的自动布局

ios - 首先显示 MasterView 而不是 Details

python - 在不创建辅助数组的情况下使用 imshow 绘制数组时,将特定颜色分配给数组的值

ios - 如何在这些 Uiimage View 中使用 Xcode 自动布局?

c - 如何做一个矩阵指针数组?

swift - Home 按钮 Swift SpriteKit

swift - macOS 应用程序中的表单验证问题

ios - 以表单大小显示弹出 View

c++ - 我卡在自定义链表上

javascript - 循环并检查两个数组始终仅返回一个元素