サイトトップ

Director Flash 書籍 業務内容 プロフィール

Flash ActionScript 3.0 Reference

◎01 Mathクラス

☆06 ★ランダムな整数を求めたい

解説
占いやクイズなど、ある範囲の整数からランダムに値を取出したいことがあります。Math.random()メソッドは、ランダムな数値を返します。ただし、値の範囲は0以上1未満の浮動小数値です。予め決められた範囲のランダムな整数は、このMath.random()メソッドの戻り値を用いて求めることができます。そのとき、小数点以下を切捨てるMath.floor()メソッドも使います。Math.floor()メソッドについては、後述「数値を指定桁数で丸めたい」をご参照ください。

→関連項目
数値を指定桁数で丸めたい

Mathクラス
パッケージ トップレベル
継承 Math→Object
random()メソッド ASタイプ M
ランタイムバージョン AIR 1.0/Flash Player 9
文法 Math.random():Number
意味 0以上1未満の乱数(ランダムな数値)を返します。
引数 なし。
戻り値 0以上1未満の浮動小数値の乱数。

※疑似乱数
Math.random()メソッドの戻り値を、[ヘルプ]は「疑似乱数」と説明しています。これは、ランダムな数値を算出するアルゴリズムがあるため、完全に無秩序な真の乱数ではないことを意味します。

ふたつのメソッドを使って、ランダムな整数を求めるには、つぎの式を使います。必要な整数の範囲の最大値をnMax、最小値をnMinとし、ランダムな整数を変数nRandomに代入します。

var nRandom:int = Math.floor(Math.random() * (nMax - nMin + 1)) + nMin;

※数値の範囲を定める
一般に0から1までの範囲で値の変わる変数xがあるとき、xの値に比例してaからbまでの範囲の数値を得るには、つぎの式を用います。式の値は、xが0のときaとなり、1のときbになります。

(b - a)x + a

ランダムな整数を求める上記本文の式も、基本的にこの考え方にもとづきます。ただし、整数の場合乱数に掛けるのは(nMax - nMin)でなく、それに1を加えて(nMax - nMin + 1)としています。たとえば、サイコロの目は1から6までの6つです。そのとき、(6 - 1)では5となり、6つの目が出ません。最小値1も必要な目に含まれるのですから、引き過ぎた整数ひとつ分を足し戻す必要があります。そのため、ランダムな整数は、本文の式のように計算されるのです。


記述例
以下のスクリプト01-06-001には、フレームアクションにランダムな整数を返す関数xGetRandomInt()が定義してあります。引数には必要な範囲の整数を、最小値、最大値の順で指定します。たとえば、サイコロの目として1から6までの範囲のランダムな整数を得たい場合には、関数xGetRandomInt()をつぎのように呼出します。

var nSpot:int = xGetRandomInt(1, 6)

スクリプト01-06-001■ランダムな整数を返す関数の定義

// フレームアクション
function xGetRandomInt(nMin:Number, nMax:Number):int {
  var nRandom:int = Math.floor(Math.random() * (nMax - nMin + 1)) + nMin;
  return nRandom;
}


作成者: 野中文雄
ドラフト作成: 2009年5月19日


Copyright © 2001-2009 Fumio Nonaka.  All rights reserved.