我知道从字符串中获取随机字符。来自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 个唯一随机字符的数组。即,数组计数为零
我怎样才能毫不拖延地实现这一目标?
注意:
最佳答案
你试过吗?
我从你的问题中了解到的。 生成一个所有字符都是唯一的随机文本
。
在将随机字符串附加到数组之前,检查数组是否具有 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/