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

2023-12-15

当尝试使用 Swift 3 在 Linux 中生成随机字符串时,我遇到了 2 个问题。

  1. 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
    }
    

那行得通。Edit:它有效,但每次都给我相同的数字:(

  1. 当尝试生成随机字母数字字符串时,我仅限于使用 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 中运行该函数时,该函数实际上可以工作 沙箱

enter image description here and I'm assuming its using linux also. Im very stuck and confused any help would be greatly appreciated.

(UPDATE):我在 Linux 环境中使用单个 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
 }  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机字母数字字符串 Linux Swift 3 的相关文章

  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • 我在哪里可以获得可靠的熵来源(真正的随机性字节[])?

    目前 我正在寻找一种方法来增加随机性的质量 in my Android应用程序 纸牌游戏 之前 估计对于我的情况 52 排列 至少需要 226 位熵 226 个随机位 我打算用这个byte 作为种子SecureRandom SecureRa
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug

随机推荐

  • 使用 df 命令仅显示 %used

    我发现了一些其他解决方案 例如 df Ph oracle archive awk NR 2 print 5 tr d 但它们似乎有点太多了 我认为存在更优雅的东西 因为我将直接传递到subprocess check output in py
  • IBM MQ XMS 消息侦听器仅获取队列中已有的消息,而不是新消息

    我有 IBM MQ XMS 的发送者和接收者控制台应用程序 发送方填充队列 接收方使用 receive 方法使队列管理器出列 我使用带有 bool 值的 while 循环来继续运行接收器 以便每当队列中存在新消息时接收器都可以获取该数据 现
  • 如何使用 pywin32 和 WMI 设置进程优先级?

    from win32com client import GetObject for proc in GetObject WinMgmts impersonationLevel impersonate IncreaseBasePriority
  • 从 PHP 访问 apache errordocument 指令

    如果不满足某些条件 我想制作一个像真正的 404 页面一样的 php 脚本输出 如 Apache ErrorDocument 指令中设置 我不确定如何 是否可以从 PHP 访问该值 if SESSION value header SERVE
  • Xcode iPhone 中的搜索栏

    我需要在 Xcode Iphone 中使用 SearchBar 的帮助 我在表格视图中有一个联系人列表 我上面有一个搜索栏 我显示联系人列表 我需要实现搜索以从联系人列表中过滤联系人 任何帮助都会对我很有用 提前致谢 查看分步教程here
  • 使用 React 组件登录 Firebase

    基本思想是在 React 中创建 Firebase 登录 这些组件会自行渲染 但它们不能一起工作 主要问题是 在调用 onAuthStateChanged 方法后 渲染函数不会采用 new 状态 我究竟做错了什么 非常感谢你们 var Lo
  • 从多维 Numpy 数组行中选择随机窗口

    我有一个大数组 其中每一行都是一个时间序列 因此需要保持顺序 我想为每行选择一个给定大小的随机窗口 Example gt gt gt import numpy as np gt gt gt arr np array range 42 res
  • 无法在 DevOps 步骤中设置 powershell 输出变量

    我正在尝试使用 powershell 脚本中的输出变量 我使用经典 UI 在线使用 Devops 并在发布管道中尝试了 powershell 4 和 Powershell 5 任务 我正在使用一个自托管代理 它可以正常工作并执行许多其他构建
  • mysql - 优化连接表列上的 ORDER BY COALESCE

    编辑 按请求添加完整查询 本质上 我有一个帖子表 一对多地链接到转发表 类似于 Twitter 我想加载按重新发布时间 如果存在 或原始帖子时间排序的帖子 然而 使用单个查询的排序过程非常慢 可能是因为 COALESCE x y 没有充分利
  • 如何对每组进行平均和计数以及创建新表

    我有一个Dataset 我想计算每个分数组 1 10 中KPI CPM和CPC列以及计数次数列的平均值 如何根据结果创建新表 新表如下所示 score avg KPI avg CPC avg CPM count times 10 9 8 7
  • 有没有办法从数据窗口中隐藏特定的指标值?

    我最近创建了一个脚本 可以在 TradingView 的图表上绘制几个不同的指标 在特定场景下 部分指标不活跃 在数据窗口中显示 n a 我知道 TradingView 允许我们隐藏所有指标值 我想自定义哪些指标值可见 这可能吗 谢谢你的时
  • 不使用 runif() 的随机统一数

    通常为了生成均匀随机数序列 我在 R 中使用 runif 命令 runif 10 0 10 1 5 032995 8 712604 4 400579 3 874882 2 401324 2 465861 2 59525 8 570266 2
  • 如何在 python 中递归生成目录大小,例如 du 。做?

    可以说我的结构是这样的 am here one some dir two three has many leaves hello world 假设 one some dir 包含一个大文件 500mb 而 Three has many le
  • PostgreSQL“列不存在”但实际上存在

    我正在写一个Java应用程序自动构建和运行 SQL 查询 对于许多表 我的代码工作正常 但在某个表上 它会因抛出以下异常而卡住 Exception in thread main org postgresql util PSQLExcepti
  • 使用批处理脚本将行从 .csv 文件复制到另一个 .csv 文件中

    我正在从设备 输出 创建 csv 文件 并且需要将此文件中的特定行数复制到另一个具有相同格式的 csv 文件中 幸运的是 它们的格式相同 因此每个文件都有相同的行可供复制 第 68 行到 107 行 我已经使用其他来源的代码尝试过此操作 但
  • R数据帧按组排名(按排名分组),带有包 dplyr

    我有一个数据框 测试 如下所示 session id seller feedback score 1 1 282470 2 1 275258 3 1 275258 4 1 275258 5 1 37831 6 1 282470 7 1 26
  • 收到“外部表不是预期的格式。”尝试在 SSIS 中导入 Excel 文件时出错

    我正在尝试导入 Excel 文件 xls 通过 SSIS 传输到 SQL Server 中的表 但 SSIS 似乎无法将该文件识别为有效的 Excel 文件 我收到以下错误 Error 1 Excel 源 86 错误 SSIS错误代码 DT
  • 通用构建枚举的一些错误

    Solved对于第一个宏来说 编写这并不是最容易的 但我学到了很多东西 感谢 Gama11 为我指明了正确的方向 以及创造如此美丽事物的核心团队 Haxe And I even added some slick doc field stri
  • 比较方法抛出异常:比较方法违反了其一般契约[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我的比较方法会抛出异常 比较方法违反了它的一般契约 我有这个代码 class TimeComparatorTipo0 implements Comparator Override public
  • 随机字母数字字符串 Linux Swift 3

    当尝试使用 Swift 3 在 Linux 中生成随机字符串时 我遇到了 2 个问题 arc4random uniform 仅在 BSD 上的 Linux 中不可用 所以我能够使用 random 函数 当我生成可变大小的随机数时 这有效 参