指定の個数の値をランダムに返す

javascriptで乱数とか使った事無かったんで、練習がてらなんとなく作ってみた。

1〜xの範囲の数からy個の数をランダムに返す

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
#test { empty-cells: show; border-collapse: collapse; }
#test td { border: solid 1px #dcdcdc; width: 2em; height: 2em; text-align: center; }
</style>
<script type="text/javascript">
//dn … 母数。例えば「10」を渡すと、1〜10の範囲になる。
//nm … 返す個数
function RandomNumber(dn, nm) {
  if (nm > dn) { return false; }
  var obj = {}; var tmp = [];   var rtn = [];
  for (var i = 0; i < dn; i++) {
    var rnd = Math.random();
    obj[rnd] = i + 1; tmp[i] = rnd;
  }
  tmp.sort();
  for (var i = 0; i < nm; i++) { rtn[i] = obj[tmp[i]]; }
  return rtn;
}
function test() {
  var hoge = RandomNumber(10, 3);
  if (!hoge) { return false; }
  for (var i = 0; i < hoge.length; i++) {
    document.getElementById('row' + (i + 1)).innerHTML = hoge[i];
  }
}
</script>
<title>test</title>
</head>
<body>
<p>1〜10の数の中から3つの値をランダムに返します。</p>
<p><input type="button" value="click!" onclick="test();"></p>
<table id="test">
  <tr><td id="row1"></td></tr>
  <tr><td id="row2"></td></tr>
  <tr><td id="row3"></td></tr>
</table>
</body>
</html>