Rubyの勉強してます。 会社で昼休みに昼飯を選ぶアプリを作っているのですが、 DBから取得した昼飯リストの中から、なんかいい方法で 選択できないかなー? と情報を漁っていると algorithm - 重みをつけて乱択する 弾さんのブログで良い情報があったので、Rubyで書いてみました。 #! ruby class DUP def initialize(name, age) @name = name @age = age end attr_accessor :name,:age end def make_random_picker(dup) dup.sort{|a,b| a.age <=> b.age} age_sum = 0 dup.each do |d| age_sum += d.age end dup.each do |d| d.age /= age_sum end r = rand
![重み付き乱択アルゴリズム - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e336827751ade6747a11c3d8b1269cabc7dab62b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU5JTg3JThEJUUzJTgxJUJGJUU0JUJCJTk4JUUzJTgxJThEJUU0JUI5JUIxJUU2JThBJTlFJUUzJTgyJUEyJUUzJTgzJUFCJUUzJTgyJUI0JUUzJTgzJUFBJUUzJTgyJUJBJUUzJTgzJUEwJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04YmJmOTQwZTA3ODk5ZDUxYjAwNGRiMDA0NDM4M2JhOA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbnVtYTA4JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wNWJkNTc4OTdiZDYxOWQ3MzgxYjkzMDBjMDQwMmM3Mw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D21cd20861ecfddc5cad7902b966769a8)