Jeśli musisz zrobić losowanie (np. w konkursie) i potrzebujesz wybrać pewną ilość użytkowników z listy, to poniższy kod na pewno Ci się przyda. Pobiera on nazwy użytkowników (czy też inne wartości) z pliku txt. Jedyny warunek jest taki, że jedna wartość w jednej linijce np:
Wartosc1 Wartosc2 Wartosc3 Wartosc4 itd...
Cały kod jest bardzo prosty. Wczytujemy wartości, sortujemy losowo i wynik wpisujemy do pliku:
users = []
File.open("kandydaci.txt", "r") do |infile|
while (line = infile.gets)
next unless line.length > 0
users << line.strip
end
end
users = users.sort_by { rand }
users[0, 10].each do |user|
File.open("wyniki.txt", 'a') {|f| f.write("#{user}\n") }
end