popo factory blog

JavaScriptとActionScriptでロト6のクイックピックを書いてみた

   

まだActionScript3(以降AS3)に慣れていないので小さいプログラムを書いてみたりして練習としています。

それでもいきなりAS3脳がまだできていないのでJavascriptからまず書いて動作テストなどをします。

 

 

プログラムの教科書などに載っている重複しないn個の数を取るを考えていて、なんとなくロト6のクイックピックを作ってみま

 

した。クイックピックとはロト6を買うときに数字を選ぶのが面倒な時に勝手に数字を選んでくれる買い方です。

 

ちょっと考えただけなので考え方自体ちょっと怪しいですが以下サンプルになります。

Javascript版

サンプルページ

<script> var mn,mt,d,br,m,mr,ar,qp,st;</p> <p>mn = 60; mt = 6; ar = [mn]; qp = [mt]; d = document; br = "<br / / / />"; m = Math; mr = m.random; st = new Date().getTime();</p> <p>for(var i=0; i<mn ; i++) ar[i] = i; for(var j=0; j<mt; j++){ var r=0; for(;;){ r = m.floor(mr()*mn+1); if(ar[r]!=undefined) break; } qp[j] = ar[r]; delete ar[r]; }</p> <p>d.write('<b>Loto6 quick pick'); d.write(br) d.write(qp); d.write(br); var et = (new Date().getTime() - st)/1000; d.write(et); </mn></script></p> <p>

AS3

サンプルページ

package {<br /> import flash.display.*;<br /> import flash.text.*;</p> <p> public class quickpick extends Sprite{<br /> public function quickpick():void{<br /> var mn,mt,ar,qp,br,st,et,t;<br /> st = new Date().getMilliseconds();<br /> mn = 60;<br /> mt = 6;<br /> ar = [];<br /> qp = [];<br /> br = &#8220;\n&#8221;;<br /> t = new TextField();<br /> t.text = &#8220;&#8221;;</p> <p> for(var i=0; i<mn +1; i++) ar[i] = i;<br /> for(var j=0; j<mt; j++){<br /> var r=0;<br /> for(;;){<br /> r = Math.floor(Math.random()*mn);<br /> if(ar[r]!= undefined) break;<br /> }<br /> qp[j] = ar[r];<br /> ar[r] = undefined;<br /> }</p> <p> t.width = 200;<br /> t.appendText("Loto6 quick pick");<br /> t.appendText(br)<br /> t.appendText(qp.join(","));<br /> t.appendText(br);<br /> et = (new Date().getMilliseconds() - st)/1000;<br /> t.appendText(et);<br /> addChild(t);<br /> }<br /> }<br /> }</p> <p>

どちらもベンチマークをつけてみましたが、早すぎて0秒と表示されることがほとんどで
たまに時間表示が出ても、Javascript、AS3と同じくらいの時間しかかかっていないようです。

ご意見、ご感想をお待ちしております。

 - ActionScript, JavaScript, ロト6