FumioNonaka.com Newsletter  RSSを登録する

Macromedia Flash & Directorのテクニカル情報を掲載するFumioNonaka.comから最新ヘッドラインをお知らせ。Flash ActionScriptやDirector Lingoなどスクリプトを中心としたTipsやトラブルシューティング、リファレンスなどで構成。

最新号をメルマガでお届けします    
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
2010/11/15

[FumioNonaka.com Newsletter: no.083]

//=========================================================================
// [FumioNonaka.com Newsletter]
//
var issue:uint = 83;  // 第83号
var published:Date = new Date(2010, 11, 15);  // November 15, 2010
//=========================================================================
var index:Object = {
No_0:100分の1を100回やってみる,
No_1:10月の新ネタ,
No_2:書きもの,
No_3:セミナー,
No_4:よろず新情報,
No_5:数学覚え書き
};  //_____________________________________________________________________
/*
■PR: 11-12月のActionScriptセミナー・講習→No_3:セミナー
【無料イベント!!】
2010年11月30日火曜日「ActionScript 3.0の3次元表現と数学の基礎」
http://www.jagra.or.jp/schoolblog/2010/11/actionscript-event.html
[定期講座]
http://www.jagra.or.jp/school/web/index.html#actionscript
2010年11月19日金曜日「Flash ActionScript 3.0ベーシックトレーニング(初級)」
2010年11月25日木曜日-26日金曜日「基礎から学ぶActionScript 3.0 〜ステップ3」
2010年12月3日金曜日「ActionScript 3.0で学ぶ基礎の数学講座」
2010年12月8日水曜日「ActionScript 3.0で学ぶ3次元空間の表現講座」

【No_0:】100分の1を100回やってみる=========================================
11月10日にゲーム作家遠藤雅伸(@evezoo )氏のこんなretweetが流れました。

http://twitter.com/#!/evezoo/status/2259399124983809
「乱数は、意図した演出の範囲から逸脱しない誤差の揺らぎに使うべき。
100回試したら一度は起こって欲しい事象に1/100の確率を使う馬鹿多過ぎw
これを100人で試したら、36人は統計的に100回では起きない概算になる。」

1/100が起こらない確率(余事象)は99/100です。それを100回繰り返すと、約36.6%に
なります。

	(99/100)^100 = 0.366

たとえばお天気の話なら、雨の日が1/100日という砂漠に100日間滞在したときに、
まったく雨に降られないことはありえます。その砂漠をかわるがわる100人の旅人が
訪れたとして、内36人が雨に遭わなかったとしてもおかしいというにはあたらない
でしょう。

けれど、100個にひとつ当たりのあるお菓子を100個入りケースひと箱大人買いした
ときは、ひとつも当たりが出なければその人は怒り狂うはずです。それが「一度は
起こって欲しい事象」の意味することです。

遠藤氏は、ご自身のblog「ゲームの神様」で詳しく説明されています。

ゲームの神様「100分の1を100回やってみる」 
http://ameblo.jp/evezoo/entry-10704872133.html
「数学的にも、ある回数で1度くらい起こって欲しいことを、『ある回数分の1』
の確率で設定してしまうと、ある回数に達したときにまだ起こっていない人の
割合は、37%弱に収束されます。要するに、何とか分の1の確率の物を何とか回
やっても起こらない人は、100人中36人強になるということ。」

そういうときは、100の目があるルーレットを毎度回したのではいけません。同じ
ルーレットでもロシアンルーレット、つまり100発の弾倉のひとつに弾を入れ、順に
引き金を引く必要があるのです。

スクリプトの場合は、拳銃の代わりに配列を用意して、インデックス0から99までの
どれかひとつにランダムで当たりのフラグを放り込みます。インデックス0から順に
値を取出せば、99までのどこかで当たりが出ます。

気にかかるのは、「何とか分の1の確率の物を何とか回やっても起こらない人」は
「37%弱に収束」するというくだりです。これはどういう理由によるのでしょう。
今回は、最後の項目No_5のお題を「数学覚え書き」とし、そこで考えてみます。

【No_1:10月の新ネタ】======================================================
[ActionScript 3.0/スクリプティング新規情報]
■連結リスト(linked list)
http://www.fumiononaka.com/TechNotes/Flash/FN1010001.html
連結リスト(linked list)は、値の容れ物として用いられるObjectとArrayクラスの
中間のような仕組みです。Objectインスタンスと違って、納められた値には順序が
あります。けれど配列と異なり、それぞれはインデックス番号をもちません。その
つくり方と使い方をご説明します。

[オブジェクト指向プログラミング新規情報]
■Iterator(イテレータ)パターン
http://www.fumiononaka.com/TechNotes/Flash/FN1010002.html
Iterator(イテレータ)は「反復子」と訳され、繰返し処理を意味します。データの
取出し方に用いるプロパティやメソッドが統一できると、クラスを使い回しやすく
なります。デザインパターンのIteratorは、その手法を示すものです。

【No_2:書きもの】==========================================================
[gihyo.jp]
■連載「ActionScript 3.0で始めるオブジェクト指向スクリプティング」
・第38回「z座標値に応じて重ね順を変える」
http://gihyo.jp/dev/serial/01/as3/0038
面を4つに増やし、矩形の画像で四方を囲んで、最後は上下左右に回します。前回に
続き、面の重ね順をどう決めるかが課題です。

[Adobe Flash Developer Center]
米国Adobe Flash Developer Centerに、つぎの7本のシリーズ記事を寄稿しました。
日本サイトの記事「ActionScript 3.0から見るFlash Professional CS5」をもとに
英語化したものです。
http://www.adobe.com/jp/devnet/flash/articles/actionscript30_CS5.html
■Controlling the appearance of text elements with the Text Layout Framework
http://www.adobe.com/devnet/flash/articles/flcs5_features_tlf.html
■Manipulating springs of an IK Bone for animations
http://www.adobe.com/devnet/flash/articles/flcs5_features_ik.html
■Leveraging code snippets and using enhanced code hinting
http://www.adobe.com/devnet/flash/articles/flcs5_features_code_snippets.html
■Dynamically drawing a vector instance that contains elements
http://www.adobe.com/devnet/flash/articles/flcs5_features_vector_class.html
■Displaying the audio waveform captured from a microphone
http://www.adobe.com/devnet/flash/articles/flcs5_features_microphone_event.html
■Deploying projects on devices with touch panels
http://www.adobe.com/devnet/flash/articles/flcs5_features_multitouch_event.html
■Catching errors globally to facilitate troubleshooting
http://www.adobe.com/devnet/flash/articles/flcs5_features_uncaughterrorevents_class.html

[F-site: ActionScript: AS3]
■インスタンスをドラッグして回すクラス定義
http://f-site.org/articles/2010/10/01180427.html
インスタンスをドラッグして回し、マウスボタンを放して滑らせるアニメーション
表現をクラス定義しました。[ライブラリ]中のMovieClipシンボルに[クラス]として
設定すれば、インスタンスのドラッグ&ドロップで、そのようなインタラクティブな
動きをします。

■連結リストとVectorによるエレメントの追加と削除
http://f-site.org/articles/2010/10/12235843.html
「連結リスト」はObjectとArrayクラスの中間のような仕組みです。エレメントには
順序があるもののインデックス番号をもちません。その処理の速さをVectorクラス
と比べてみます。

■Observerパターンのサンプルプログラム
http://f-site.org/articles/2010/10/30031500.html
オブジェクト指向プログラミングにおけるデザインパターンのひとつに「Observer
パターン」があります。対象となるオブジェクトが状態を変えるたび、その情報を
必要なインスタンス(Observer)に送る仕組みです。Javaの例をActionScript 3.0に
書替えてみます。今回は、デザインパターンの解説書としては定評のある結城浩著
『Java言語で学ぶデザインパターン入門』のサンプルプログラムを題材とします。

【No_3:セミナー】==========================================================
[JaGra PROFESSIONAL DTP & WEB SCHOOL]
■【無料イベント】ActionScript 3.0の3次元表現と数学の基礎
http://www.jagra.or.jp/schoolblog/2010/11/actionscript-event.html
ActionScript 3.0の基礎を学んだ方を対象に、3次元空間の扱いで重要となる数学の
基礎と、それがどのようにActionScript 3.0の3次元の表現で使われるのかについて
解説します。

【日  時】2010年11月30日火曜日
・第1回15:30〜17:00 (開場15:00)
・第2回18:30〜20:00 (開場18:00)
 *各回の内容は同じ
【参加費用】無料 (事前登録制)
【場  所】社団法人日本グラフィックサービス工業会 セミナールーム
【定  員】各回40名

■ActionScriptベーシックトレーニング
http://www.jagra.or.jp/school/web/actionscript_basic.html
Flashアニメーションの基本、具体的にはタイムラインやフレームの操作、ならびに
シンボルの作成について理解している方を対象としたActionScriptの入門講座です。

ボタンを使ったスライドショーなどFlashでのインターフェイス作成を題材として、
基本的なスクリプトを解説していきます。受講にあたっては、ActionScriptを含め
スクリプトを書いた経験は不要です。

【日  時】2010年11月19日金曜日6時間
【参加費用】21,000円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】オリジナルテキスト

■ActionScript 3.0で学ぶ3次元空間の表現講座
http://www.jagra.or.jp/school/web/actionscript3_3d.html
ActionScript 3.0の基礎を学んだ方に、その基本となる考え方を解説します。3次元
空間を扱おうとすると、初めは馴染みのない用語や考え方に戸惑うかもしれません。
けれど、基本が理解できれば、自分でスクリプトを組立てることは決して難しくは
ありません。本講座は3次元空間のスクリプティングについての基礎固めをします。

おもなクラスとしては、Vector3DやMatrix3Dがあります。講座ではあまり見栄えの
するサンプルは扱いません。その代わり、ステートメントひとつひとつについて、
それが何をするのか詳しく説明します。

スクリプトは、ActionScript 3.0を使い、イベントリスナーの扱いを理解している
ことが前提となります。

【日  時】2010年12月8日水曜日6時間
【参加費用】21,000円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0による三次元表現ガイドブック』

■ActionScript 3.0で学ぶ基礎の数学講座
http://www.jagra.or.jp/school/web/actionscript3_math.html
アニメーションを扱ううえで重要な座標と3次元空間に関わる、数学の基礎について
学びます。とくに後半は、高校文系の数学の知識では理解しにくい、行列とMatrix
およびMatrix3Dクラスについて解説します。スクリプティングよりも、数学的解説
が中心です。

スクリプトによるアニメーションでは、数学や物理学の知識が必要とされることは
よくあります。そうしたとき、すぐに公式を探す人が少なくありません。けれど、
必ずしも都合のいい公式は見つからないでしょう。それに、単純に公式を適用した
だけで、意図した動きになるとはかぎらないのです。公式を覚えて適用するだけで
なく、その原理や考え方を理解して、応用する必要があります。

スクリプトは、ActionScript 3.0を使い、イベントリスナーの扱いを理解している
ことが前提となります。数学の知識については、高校文系レベルとします。

【日  時】2010年12月3日金曜日6時間
【参加費用】21,000円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0による三次元表現ガイドブック』

■基礎から学ぶActionScript 3.0 〜ステップ1
http://www.jagra.or.jp/school/web/actionscript3_step1.html
簡単なスクリプトは書いたことがある、という初学者を対象とした基礎講座です。
スクリプトによるアニメーションを題材にして、ActionScript 3.0の基本と処理の
組立て方・考え方を解説します。おもな学習項目としては、変数と関数、イベント
リスナー、および日付と文字の扱いなどが含まれます。ActionScript 2.0の知識は
前提とはしません。

【日  時】2011年2月9日木曜日6時間
【参加費用】21,000円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』

■基礎から学ぶActionScript 3.0 〜ステップ2
http://www.jagra.or.jp/school/web/actionscript3_step2.html
ActionScript 3.0の基礎の学習を終えた初級者が対象です。MovieClipインスタンス
をインタラクティブにアニメーションさせるムービーを作成しながら、座標と座標
空間の扱い、条件判定、配列やObjectの操作などについて学びます。関数を基本に
すえた処理のパーツ化についても、実習をとおして理解していただきます

【日  時】2011年2月10日木曜日6時間
【参加費用】21,000円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』

■基礎から学ぶActionScript 3.0 〜ステップ3
http://www.jagra.or.jp/school/web/actionscript3_step3.html
ActionScript 3.0の基本的なスクリプティングの知識をもった初級者が対象です。
3D風に回転するアニメーションのスクリプトを出発点に、クラスの定義やイベント
の配信までデザイン(設計・構成)を展開していきます。三角関数や数学的な考え方、
クラスの応用についても触れます。変数や関数、条件判定、イベントリスナーなど
基礎事項は、学習されていることが前提です。

【日  時】2010年11月25日木曜日〜26日金曜日6時間×2日全12時間
【参加費用】54,600円
【場  所】社団法人日本グラフィックサービス工業会
【募集人数】10名
【テキスト】『ActionScript 3.0プロフェッショナルガイド』

【No_4:よろず新情報】======================================================
[FLASH-Japanネタ]
■楕円の動きでイージング
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9656&forum=6
イーズアウトの処理の仕方です。よく使われる基本的な表現でしょう。

■カラーピッカーの表示色数について
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9654&forum=8
表題の話から、16進数とビット演算の議論になりました。

■理解しているようで、理解していない用語
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9673&forum=8
ドキュメントクラスの意味とその使い方の基本です。

■なぜキャストが必要なのか?
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9687&forum=8
Event.targetプロパティは、Objectで型指定されています。実際のインスタンスが
つくられたクラスのプロパティやメソッドにアクセスするにはキャストしなければ
なりません。

【No_5:数学覚え書き】======================================================
■何とか分の1の確率の物を何とか回やっても起こらない確率
巻頭言No_0「100分の1を100回やってみる」に引用した、遠藤雅伸氏のつぎのような
blogのくだりが気になったのでした。

http://ameblo.jp/evezoo/entry-10704872133.html
「数学的にも、ある回数で1度くらい起こって欲しいことを、『ある回数分の1』
の確率で設定してしまうと、ある回数に達したときにまだ起こっていない人の
割合は、37%弱に収束されます。要するに、何とか分の1の確率の物を何とか回
やっても起こらない人は、100人中36人強になるということ。」

1/100の確率なら起こらない確率は99/100で、それを100回繰返すとすれば、つぎの
ように約36.6%になりました。

	(99/100)^100 = 0.366

これを一般に1/nの確率でn回繰返す場合、起こらない確率はどのように求められる
でしょう。1/nの事象が起こらない確率は(n - 1)/nです。それをn回繰返すにはn乗
することになります。

	((n - 1)/n)^n

そして「収束」というのは、nをかぎりなく大きくするとある一定の値にかぎりなく
近づくということです。

ここで自然対数の底eという数をご紹介しましょう。eは「ネイピア数」とも呼ばれ
ます。ActionScriptにも、定数Math.Eとして備わっています。値は約2.718です。
http://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%A4%E3%83%94%E3%82%A2%E6%95%B0
http://help.adobe.com/ja_JP/Flash/CS5/AS3LR/Math.html#E

このeの定義が少し変わっています。(1 + 1/n)^n = ((n + 1)/n)^nという式の値を
考えます。このnをかぎりなく大きくすると、ある決まった値に近づきます。それが
eなのです。

さて、式((n + 1)/n)^nの分子分母を入替えて、つまり逆数をとってみます。すると
(n/(n + 1))^nとなり、私たちが求めようとしている1/nの事象が起こらない確率の
((n - 1)/n)^nと、ほとんど同じかたちです。n乗している分数は、どちらも分子が
分母より1小さいからです。

前者の(n/(n + 1))^nは、eの定義のもとになった式の逆数でした。つまり、このnを
かぎりなく大きくすると、eの逆数1/eに収束します。この値は計算すると約0.367と
なり、「37%弱」という遠藤氏が「収束」するといった値になるのです。

	1/e = 1/2.718 = 0.367

もっとも、この式のnにたとえば99を代入すると、(99/100)^99となり、確率1/100を
100回でなく99回試しても起こらない確率になります。1回増やしたからといって、
さほど値は大きく変わらないでしょう。でも、私たちの考えていた((n - 1)/n)^nの
収束する値は、1/eに1回分誤差が加わりそうに感じられます。でも、実はこの式も
1/eに収束します。ここで、n = m + 1としてみます(つまりm = n -1)。

	((n - 1)/n)^n = (m/(m + 1))^(m + 1) = (m/(m + 1))^m × m/(m + 1)

すでに述べたとおり、分数m/(m + 1)の掛け算が1回増えています。掛け算の最初の
項(m/(m + 1))^mは、eを定義する式の逆数です。nをかぎりなく大きくすると、mも
やはりかぎりなく大きくなります(このような場合mがnより1小さいことは問題には
なりません)。よって、この式の値は1/eに収束します。

掛け算のふたつ目の項m/(m + 1)は、つぎのように変形します。

	m/(m + 1) = (n - 1)/n = 1 - 1/n

そしてnをかぎりなく大きくすると、1/nは0にかぎりなく近づきます。したがって、
m/(m + 1)は1に収束します。つまり、ふたつの式の積は、1/e×1 = 1/eに収束する
のです。これで、((n - 1)/n)^nも1/eに収束することが示されました。
*/
//=========================================================================
var publisher:Object = {
name:野中 文雄,
mailto:fumio@mx10.ttcn.ne.jp,
web:<http://www.FumioNonaka.com>,
credit:2003-2010 (c) Fumio Nonaka all rights reserved.
};  //_____________________________________________________________________
if (wantToUnsubscribe) {  // メールマガジンの購読中止は
	// つぎのURLでお手続きください
	var url:String = "http://www.FumioNonaka.com/Magazine/";
	var request:URLRequest = new URLRequest(url);
	navigateToURL(request);
}
最新号をメルマガでお届け
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。

最近の記事

上へ戻る