NEWS

2017.10.21 「バージョンごとの機能比較」を更新しました。

  • Web creators

ActionScript

範囲を指定してランダムな整数値を取得

概要

Flashでランダムな値を取得する場合、「random」という関数が用意されています。
「random」関数を呼び出すとランダムに0以上1未満の少数値(0.000・・・〜0.999・・・)を得る事ができますが、「1また2が欲しい」といったような場合、整数値に変換する必要があります。
ここでは「random」関数の動作と整数値への変換方法、そして「○以上□以下の範囲でランダムな整数値」を取得する方法についてご紹介します。

サンプル解説

「値取得」ボタンをクリックするとFlash内に記載された内容でランダムに値を取得します。
ボタンをクリックするごとに値も切り替わります。

作成法

(1) シンボルの作成
  ・ランダム値を取得するためのボタンのシンボルを作成します。
シンボルの作成
  ・シンボルのタイムラインにActionScriptを設定します。
01
02
03
this.onPress = function() {
 _root.getValue();
}
 
(2) シンボルをステージに配置
  ・ActionScriptを設置するレイヤー「Action」を作成します。
  ・ダイナミックテキストなどを設置するレイヤー「パーツ」を作成します。
  ・作成したシンボルをステージに設置します。
  ・ステージにダイナミックテキストを4つ配置します。
  ・上から1番目のダイナミックテキストの変数を「random」にします。
  ・上から2番目のダイナミックテキストの変数を「frandom」にします。
  ・上から3番目のダイナミックテキストの変数を「frandomB」にします。
  ・上から4番目のダイナミックテキストの変数を「frandomC」にします。
ステージに配置
 
(3) ActionScriptの設定
  ・「Action」レイヤーのタイムラインにActionScriptを設定します。
 
01
02
03
04
05
06
07
08
09

10
_root.minValue = 10;
_root.maxValue = 20;
 
function getValue() {
 _root.baseValue = Math.random();
 _root.random = _root.baseValue;
 _root.frandom = Math.floor(_root.baseValue);
 _root.frandomB = Math.floor(_root.baseValue * 10);
 _root.frandomC = Math.floor(Math.random() * (_root.maxValue - _root.minValue + 1)) + _root.minValue;
}

解説

サンプルの動作として、シンボルには「クリックされた時にファンクションを呼び出す」設定をし、その呼び出されるファンクションは4行目以下の「getValue」になります。
「random」関数を利用する場合、ActionScriptの5行目のように「Math.random()」と記述して利用します。
「Math.random()」を複数箇所で利用する場合、都度呼び出すとそれぞれの値が変わってしまうため、6行目で変数に入れて共通化させています。
この時取得できる値は少数点のため、少数点以下を切り捨て、整数値だけを取り出すことにします。
それが7行目の「Math.floor」です。
しかし「random」は1未満の数値しか返さないため、小数点以下を切り捨てても値は"0"のままとなるため、8行目のように数値を乗算することで整数値を取得することができます。
ここでは"10"を入れているため、「random」に10倍した数値(0.000・・・から9.999・・・)の小数点以下を切り捨てた、0以上9以下の数値を得ます。
もし0から100までの範囲でランダム値を取得したい場合は"101"を乗算すれば実現できます。

次に「○以上□以下」といった数値の範囲を指定する場合は、最小値と最大値を設定します。
ActionScriptの1行目には最小値を、2行目には最大値を入れ、9行目の計算式でランダム値が取得できます。
式の解説として、最後に最小値(minValue)を足しています。
これは「random」は0以上を返すので、もし0が返っても最小値を足すことでそれが最小値となります。
逆に「random」の最大値となる9.999・・・が返ってきた場合、先ほどの最小値を足すと設定した最大値を超えてしまいます。
そのため「_root.maxValue - _root.minValue」のように最大値から最後に足す最小値を差し引いています。
これに"1"を足しているのは「random」の最大値である9.999・・・に数値を乗算した場合、
0.999×0=0.000 → 整数値は"0"
0.999×1=0.999 → 整数値は"0"
0.999×2=1.998 → 整数値は"1"
0.999×3=2.997 → 整数値は"2"
のように、得られる整数値は乗算する値より1小さい値となるため、1を足しています。

ページ上部へ