List 如何从给定的一组值生成map的随机值,然后将键和值存储到scala中的单独变量中

List 如何从给定的一组值生成map的随机值,然后将键和值存储到scala中的单独变量中,list,scala,random,List,Scala,Random,我试图从scala中给定的(静态定义的)2个映射键-值对生成1000个随机键-值映射对,稍后我还想将键和值对分解,并将它们存储到单独的变量中 无论我尝试过什么: object methodTest extends App{ val testMap = Map("3875835"->"ABCDE","316067107"->"EFGHI") def getRandomElement(seq: Ma

我试图从scala中给定的(静态定义的)2个映射键-值对生成1000个随机键-值映射对,稍后我还想将键和值对分解,并将它们存储到单独的变量中

无论我尝试过什么:

object methodTest extends App{

  val testMap = Map("3875835"->"ABCDE","316067107"->"EFGHI")
  def getRandomElement(seq: Map[String,String]): Map[String,String] = {

    seq(Random.nextInt(seq.length))
  } 
 var outList = List.empty[Map[String,String]]
 for(i<-0 to 1000){
   outList+=getRandomElement(testMap)
 }
 print(outList)
}

请帮助我找出哪里出了问题,并让我知道如何解决它,如果有任何关于要求的问题,请随意发表评论

您可以使用
.toSeq
将种子映射
testMap
转换为键/值序列,然后通过迭代从0到1000的数字列表生成键/值对,将每个数字与种子的第一个或第二个元素之间的随机选择相关联:

导入scala.util.Random
val testMap=Map(“3875835”->“ABCDE”、“316067107”->“EFGHI”)
val seed=testMap.toSeq
val keyValuesList=(0到1000).map(索引=>seed(Random.nextInt(seed.size)))
注意:
0到1000
将返回0到1000之间的所有数字,因此排除1000个数字。如果您使用
0到1000
,您将获得0到1000之间的所有数字,因此包含1001个数字

如果要打印结果列表,可以使用
.foreach
方法和
println
函数作为参数:

keyValuesList.foreach(println)
您将获得:

(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
...
如果只想保留键,可以使用
.map
方法在列表上迭代,使用
\u 1
方法仅获取元组的第一个元素,该方法检索元组的第一个元素:

val keys=keyValuesList.map(keyValuePair=>keyValuePair.\u 1)
如果您只需要包含每对中所有第二个元素的列表:

val values=keyValuesList.map(keyValuePair=>keyValuePair.\u 2)

根据您的预期输出,我不确定我是否理解什么应该是随机的。您是否应该为
testMap
中的每个条目生成1000个随机数?还是总共1000?这个值应该是常量吗?请将您的预期输出固定为随机输出。了解你的要求会更清楚。
(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
...