scala - 在 Scala 中生成随机字符串/字母

标签 scala random

我正在尝试生成一个随机字符串,这些是我发现的可能性:

  • Random.nextPrintableChar() , 打印字母、数字、标点符号
  • Random.alphanumeric.take(size).mkString , 打印字母和数字
  • Random.nextString(1) , 几乎每次都打印中文字符 lol

  • Random is scala.util.Random

    size is an Int


    第二个选项几乎可以完成工作,但我需要从一封信开始。我找到了 Random.nextPrintableChar()但它也打印标点符号。
    解决办法是什么?
    到目前为止,我的解决方案是:
    val low = 65 // A
    val high = 90 // Z
    
    ((Random.nextInt(high - low) + low).toChar
    
    灵感来自 Random.nextPrintableChar执行:
    def nextPrintableChar(): Char = {
        val low  = 33
        val high = 127
        (self.nextInt(high - low) + low).toChar
      }
    

    最佳答案

    找到了更好的解决方案:
    Random.alphanumeric.filter(_.isLetter).head
    更好的解决方案是 jwvh commented :Random.alphanumeric.dropWhile(_.isDigit)

    关于scala - 在 Scala 中生成随机字符串/字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665566/

    相关文章:

    algorithm - 具有随机性的 Riffle 洗牌算法

    haskell - Haskell 中大量掷骰子的平均值

    c++ - std::shuffle 的顺序可以依赖于 RNG 之外的任何东西吗?

    scala - 如何捕获 Spark 异常并做某事?

    scala - 在 Spark Scala 中使用 map() 重新排序键值对

    scala - 展平嵌套 Scalaz 验证

    Python 生成随机的 128 位字符串

    java - 从数据帧 'java.lang.IllegalArgumentException: Wrong FS: file:/tmp/spark expected: hdfs://nameservice1' 创建 Hive 表时出错

    validation - Scala中的错误处理单子(monad)?尝试与验证

    c++ - 创建随机 double 范围内的随机整数