0から51の中から重複のない5つをランダムに選ぶにはどうしますか
30分プログラム、その526。0から51の中から重複のない5つをランダムに選ぶにはどうしますか - うんたらかんたらRuby - Rubyistをやってみる。
自分で配列をランダムに入れ替える関数を書いていたら、Gauche Users’ Reference: Topにshuffle関数を見つけた。これがあれば瞬殺ですね。
使い方
gosh>(choice 10 (iota 51)) (19 44 12 5 38 21 41 50 47 45)
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; random-choice.scm - ;; ;; Copyright(C) 2009 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2009/02/12 07:04:02 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use gauche.sequence) (use srfi-1) (define (choice n xs) (take (shuffle xs) 3))