如何通过scala生成不同的随机数?而且数量应该尽可能短

时间:2016-05-10 01:37:25

标签: scala random

如何通过scala生成不同的随机数?数字应该尽可能短。我想生成标签数据的唯一ID,同时id应该足够短以节省成本?

3 个答案:

答案 0 :(得分:8)

由于您的要求是

  1. 随机数

  2. 独特

  3. 尽可能短

  4. 然后我认为你应该考虑使用scala.util.Random.shuffle,例如,

    scala.util.Random.shuffle(1 to 30)
    

    以上代码将生成Vector,其中包含1到30之间的唯一随机数(就位置而言),例如Vector(26, 10, 7, 29, 11, 14, 16, 1, 12, 9, 28, 6, 19, 4, 27, 8, 13, 18, 30, 20, 23, 5, 21, 24, 17, 25, 2, 15, 22, 3)

    基本上它只是满足你需要的一切。

    如果您希望在SetList中获得结果,只需拨打toSettoList方法即可。

    nextInt可以实现同样的目的,但您可能需要大量的逻辑和重试机制。

答案 1 :(得分:0)

试试这个:

library(stringi)

或者您可以在控制台中检查生成的数字:

library(stringi)
do.call(rbind, stri_split(df1$V1, fixed="_", n=4))

答案 2 :(得分:0)

所以基本上你可以使用" Set"生成唯一的随机数。

val r = scala.util.Random
var temp:Int = 0
var s:Set[Int] = Set()

var i:Int = 0
while(i<n){
    temp = r.nextInt(range)   //random number will be checked whether it is already in the set or not
    if(!s.contains(temp)){    //if the random number is not in the set
      s=s+temp;               //random number is added in the set
      i+=1
    }
  }
s.toArray                     //converts the set into array