我正在尝试将球员分配到一个俱乐部。一个俱乐部有 n 名球员,一名球员属于一个俱乐部。一个俱乐部只能有少于 23 名球员,并且不能超过 2 名球员在同一位置上比赛。
clubs = Club.all #Club is a datamapper object. Returns 20 clubs
to_generate = 10000
while (to_generate > 0)
p = Player.new #Player is a datamapper object
p.position = position #position is a random integer defined elsewhere
clubs.each do |club|
count = 0
club.players.each do |club_player|
if (club_player.position == p.position)
count += 1
end
end
if (count < 2 && club.players.length < 22)
club.players << p
p.club = club
end
end
p.save
to_generate -= 1
结尾
在脚本的最后,我预计所有俱乐部都有 22 名球员。为什么不是这样?
编辑:在脚本结束时,我只得到了 22 名球员分配到最后一个俱乐部(20 名),并生成了 10000 名球员