如何从Kotlin中的列表中创建随机组?

如何从Kotlin中的列表中创建随机组?,kotlin,arraylist,Kotlin,Arraylist,这是我第一次使用Kotlin,因为我对语法非常不熟悉。我正在尝试制作一个程序,它将从用户和组数中读取名称列表,然后生成这些名称的随机分组。如果名称的数量不能完全被组的数量整除,则某些组会更短。现在,我一直在试图把我的名单分成几组。我在想我应该做一个子列表,但1)不确定如何进行,2)不确定这是否是正确的方法 这就是我现在所拥有的一切: fun main(args: Array<String>) { val number1 = Scanner(System.`in`) p

这是我第一次使用Kotlin,因为我对语法非常不熟悉。我正在尝试制作一个程序,它将从用户和组数中读取名称列表,然后生成这些名称的随机分组。如果名称的数量不能完全被组的数量整除,则某些组会更短。现在,我一直在试图把我的名单分成几组。我在想我应该做一个子列表,但1)不确定如何进行,2)不确定这是否是正确的方法

这就是我现在所拥有的一切:

fun main(args: Array<String>) {
    val number1 = Scanner(System.`in`)
    print("Enter how many names will be entered: ")
    //nextInt() method used to take the next Int value
    //and stores into nameNum
    val nameNum:Int = number1.nextInt()

    val number2 = Scanner(System.`in`)
    print("Enter how many groups you want too divide the names into: ")
    //nextInt() method used to take the next Int value
    //and stores into nameNum
    val groupsNum:Int = number2.nextInt()

    //test
    println("You entered that you have $nameNum number of names")

    println("You entered that you have $groupsNum number of groups")

    print("Please input the names of group members separated by *two* spaces: ")
    val input: String? = readLine() //reads next input for names
    val groupNames: List<String> = input!!.split("  ".toRegex()) //separates the names out using two spaces and puts into list
    println("These are the names entered: $groupNames ") //test

    val shuffledNames = groupNames.shuffled() //shuffling names of list so that a random grouping can be made
    println("These are the names shuffled: $shuffledNames") //test

    val namesInGroup = nameNum / groupsNum //by dividing number of names NameNum by number of groups groupsNum
    //will determine how many names will go in each group
}``
fun main(args:Array){
val number1=扫描仪(系统.`in`)
打印(“输入要输入的名称:”)
//用于获取下一个Int值的nextInt()方法
//并存储到nameNum中
val nameNum:Int=number1.nextInt()
val number2=扫描仪(系统.`in`)
打印(“输入您想要的组数并将名称分成:”)
//用于获取下一个Int值的nextInt()方法
//并存储到nameNum中
val groupsNum:Int=number2.nextInt()
//试验
println(“您输入的名称数为$nameNum”)
println(“您输入的$groupsNum组数”)
打印(“请输入以*两*空格分隔的组成员名称:”)
val输入:字符串?=readLine()//读取名称的下一个输入
val groupNames:List=input!!.split(“.toRegex())//使用两个空格分隔名称并放入列表中
println(“这些是输入的名称:$groupNames”)//test
val shuffledNames=groupNames.shuffled()//洗牌列表名称,以便进行随机分组
println(“这些是被洗牌的名称:$shuffledNames”)//test
val nameingroup=nameNum/groupsNum//将nameNum的名称数除以groupsNum的组数
//将确定每个组中有多少个名称
}``

如果您希望按组进行统一分配,您可以这样写:

val groups=Array(groupsNum){mutableListOf()}
在shuffledNames.withIndex()中的((i,name){
组[i%groupsNum]。添加(名称)
}
我想你可以用

val numItem = nameNum / groupsNum + if (nameNum % groupsNum != 0) 1 else 0
val groups = groupNames.chunked(numItem)
println(groups)