我的以下代码有问题。我正在尝试创建字母和数字的随机字符串。下面的代码有效,但是每个会话只能创建1个随机字符串,因此,如果我再次调用randomNum,它将仍然保留创建的第一个随机字符串。
let randomNum(len : int) =
let rand = new System.Random()
let mutable str = ""
let chars = "ABCDEFGHIJKLMNOPQRSTUVWUXYZ0123456789"
let mutable count = 0
for i in 1 .. len do
count <- (rand.Next() % 36)
str <- String.concat "" [str; chars.[count].ToString()]
str
Run Code Online (Sandbox Code Playgroud)
有谁知道每次调用randomNum时创建随机字符串的简单方法。
谢谢
您可以使用更惯用的语法来做到这一点:
let randomStr =
let chars = "ABCDEFGHIJKLMNOPQRSTUVWUXYZ0123456789"
let charsLen = chars.Length
let random = System.Random()
fun len ->
let randomChars = [|for i in 0..len -> chars.[random.Next(charsLen)]|]
new System.String(randomChars)
Run Code Online (Sandbox Code Playgroud)
我们将chars数组,数组的长度和Random生成器保存在一个封闭符中,然后返回一个函数,该函数采用所需的长度来构建字符串。
调用函数:
let randomString10 = randomStr(10)
Run Code Online (Sandbox Code Playgroud)