如何在scala中生成固定大小(例如36位)的二进制字符串的随机序列

时间:2019-04-19 03:56:53

标签: scala

我正在尝试生成一个唯一的随机序列,其中包含50个二进制字符串,每个字符串的大小为36位。我试着做nextInt,然后再做toBinaryString,这不能解决我的问题,因为nextInt不支持这么大的数字,并且还检查了nextString生成了一些随机字符的字符串(不是0/1),还有其他方法可以实现吗? 另外要增加一个要求,我希望每次都出现36位,假设某个随机生成器生成3作为数字,我希望输出为000 ...(34)11。

我对Scala还是很陌生,请问我的问题似乎是无关紧要还是多余的。

1 个答案:

答案 0 :(得分:1)

您可以尝试

val r = scala.util.Random
val a: immutable.Seq[Int] = (0 to 50).map(_ => r.nextInt(1000000))
val y = a.map( x => {
   val bin = x.toBinaryString
   val zero = 36 - bin.length
   List.fill(zero)(0).mkString("") ++ bin
})
println(Random.shuffle(y))