从 CSV 文件中将随机用户添加到组
Add random users to groups from CSV file
我有一个问题,我正在将 csv 文件中的用户添加到某些组中,在此示例中。这是MAX。 3 users/group。但我想要的是,我有 10 个组,然后将 csv 文件中的随机用户添加到组中,然后我可能得到 7 个组,每个组有 4 个用户,最后 3 个组有 3 个用户,就是这样好的
但是我如何更改此脚本,从仅添加 3 个 users/group 到将用户添加到 "hardcoded" 10 个组,从 csv 文件?
自动取款机。我得到这个:
$deltager = Import-Csv C:\Users\Desktop\liste.csv
$holdstr = 3
$maxTeams = [math]::ceiling($deltager.Count/$holdstr)
$teams = @{}
$shuffled = $deltager | Get-Random -Count $deltager.Count
$shuffled | ForEach-Object { $i = 1 }{
$teams["$([Math]::Floor($i / $holdstr))"] += @($_.Navn)
$i++
}
$Grupper = $teams | Out-String
Write-Host $Grupper
使用 remainder/modulo 运算符 %
到 "wrap around" 组索引,然后一次添加一个用户以获得最佳分配:
# define number of groups
$numberOfTeams = 10
# read participant records from csv
$participants = Import-Csv C:\Users\Desktop\liste.csv
# create jagged array for the team rosters
$teams = ,@() * $numberOfTeams
# go through participant list, add to "next" group in line
$index = 0
$participants |%{
$teams[$index++ % $numberOfTeams] += @($_.Navn)
}
如果您想随机安排参与者的顺序,只需在填充组之前随机排序列表即可:
$participants = Import-Csv C:\Users\Desktop\liste.csv |Sort-Object {Get-Random}
$teams
中的每一项都是另一个名称数组,因此要枚举它们:
0..$teams.Length |%{
Write-Host "Team $($_+1):" $($teams[$_] -join ', ')
}
我有一个问题,我正在将 csv 文件中的用户添加到某些组中,在此示例中。这是MAX。 3 users/group。但我想要的是,我有 10 个组,然后将 csv 文件中的随机用户添加到组中,然后我可能得到 7 个组,每个组有 4 个用户,最后 3 个组有 3 个用户,就是这样好的
但是我如何更改此脚本,从仅添加 3 个 users/group 到将用户添加到 "hardcoded" 10 个组,从 csv 文件?
自动取款机。我得到这个:
$deltager = Import-Csv C:\Users\Desktop\liste.csv
$holdstr = 3
$maxTeams = [math]::ceiling($deltager.Count/$holdstr)
$teams = @{}
$shuffled = $deltager | Get-Random -Count $deltager.Count
$shuffled | ForEach-Object { $i = 1 }{
$teams["$([Math]::Floor($i / $holdstr))"] += @($_.Navn)
$i++
}
$Grupper = $teams | Out-String
Write-Host $Grupper
使用 remainder/modulo 运算符 %
到 "wrap around" 组索引,然后一次添加一个用户以获得最佳分配:
# define number of groups
$numberOfTeams = 10
# read participant records from csv
$participants = Import-Csv C:\Users\Desktop\liste.csv
# create jagged array for the team rosters
$teams = ,@() * $numberOfTeams
# go through participant list, add to "next" group in line
$index = 0
$participants |%{
$teams[$index++ % $numberOfTeams] += @($_.Navn)
}
如果您想随机安排参与者的顺序,只需在填充组之前随机排序列表即可:
$participants = Import-Csv C:\Users\Desktop\liste.csv |Sort-Object {Get-Random}
$teams
中的每一项都是另一个名称数组,因此要枚举它们:
0..$teams.Length |%{
Write-Host "Team $($_+1):" $($teams[$_] -join ', ')
}