Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了随机字母数字字符串Linux Swift 3大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

尝试使用 Swift 3在 Linux中生成随机字符串时遇到2个问题. > arc4random_uniform仅在BSD上的Linux中不可用.所以我能够使用random()函数逃脱.这在我生成可变大小的随机数时起作用(参见下面的代码) func generateRandomnumber() -> Int { var place = 1 var finalnumber = 0;
尝试使用 Swift 3在 Linux生成随机字符串时遇到2个问题.

> arc4random_uniform仅在BSD上的Linux中不可用.所以我能够使用random()函数逃脱.这在我生成可变大小的随机数时起作用(参见下面的代码)

func generateRandomnumber() -> Int
{
   var place = 1

   var finalnumber = 0;

#if os(LinuX)
for _ in 0..<5
{
    place *= 10

    let randomnumber = Int(random() % 10) + 1

    finalnumber += randomnumber * place
}
#else
for _ in 0..<5
{
    place *= 10

    let randomnumber = Int(arc4random_uniform(10))

    finalnumber += randomnumber * place
}
#endif

  return finalnumber
}

那个工作.
编辑:它的工作原理,但它每次给我相同的数字:(

>当尝试生成随机字母数字字符串时,我仅限于使用Swift String而不是NSStriNG. Linux抛出此错误

原始的Linux前代码块:

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

      let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRstuVWXYZ0123456789"
      let len = UInt32(letters.length)

      var randomString = ""

      for _ in 0 ..< length {
    let rand = arc4random_uniform(len)
    var nextChar = letters.character(at: Int(rand))
    randomString += NSString(characters: &nextChar,length: 1) as String
      }

       return randomString
    }

以及使用上面代码时得到的实际错误

error: cAnnot convert value of type 'NSString' to type 'String' in coercion
        randomString += NSString(characters: &nextChar,length: 1) as String

修改为linux代码块.

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

let letters : String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRstuVWXYZ0123456789"
let len = letters.characters.count

var randomString = ""

#if os(LinuX)

    for _ in 0..<length
    {
        let randomValue = (random() % len) + 1

        randomString += "\(letters[letters.index(letters.starTindex,offsetBy: Int(randomvalue))])"
    }

    #else
    for _ in 0 ..< length
    {
        let rand = arc4random_uniform(UInt32(len))

        randomString += "\(letters[letters.index(letters.starTindex,offsetBy: Int(rand))])"
    }
    #endif


      return randomString
}

但这次错误很奇怪,它只是说没有额外信息的非法指令.我以交互模式运行了docker容器,我看到我的服务器正在运行并在调用其他函数时打印出来等.

但事实上,当我在IBM的swift中运行它时,函数实际上是可行的
砂箱

随机字母数字字符串Linux Swift 3


我也假设它也使用linux.我非常困惑和困惑任何帮助将不胜感激.

(更新):我在一个linux env中使用单个swift文件而不是Vapor swift web框架运行相同的功能.它的工作原理.正如我在上面的编辑中所提到的,它每次都给我相同的随机字符串.一旦我的构建完成,我仍然需要测试整个项目.但除此之外,我需要知道random()函数是否实际上每次给我一些新东西而不是相同的废话.

解决方法

弄清楚了.

所以重复随机数/字符串的答案就是在调用random()函数之前添加这一行

srand(UInt32(time(nil)))

我假设那也是修正非法指令的原因.因为我不记得改变其他任何东西.

不用说这是我的最终结果

func generateRandomnumber() -> Int
 {
    var place = 1

    var finalnumber = 0;

    #if os(LinuX)

    srand(UInt32(time(nil)))

    for _ in 0..<5
    {
        place *= 10

        let randomnumber = Int(random() % 10) + 1

        finalnumber += randomnumber * place
    }
    #else
    for _ in 0..<5
    {
        place *= 10

        let randomnumber = Int(arc4random_uniform(10))

        finalnumber += randomnumber * place
    }
    #endif

     return finalnumber
 }



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

    let letters : String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRstuVWXYZ0123456789"
    let len = letters.characters.count

    var randomString = ""

    #if os(LinuX)

    srand(UInt32(time(nil)))

   for _ in 0..<length
   {
     let randomValue = (random() % len) + 1

     randomString += "\(letters[letters.index(letters.starTindex,offsetBy: Int(randomvalue))])"
   }

   #else
  for _ in 0 ..< length
  {
     let rand = arc4random_uniform(UInt32(len))

     randomString += "\(letters[letters.index(letters.starTindex,offsetBy: Int(rand))])"
  }
  #endif

   return randomString
 }

大佬总结

以上是大佬教程为你收集整理的随机字母数字字符串Linux Swift 3全部内容,希望文章能够帮你解决随机字母数字字符串Linux Swift 3所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。