JavaScript 数値演算 新しいページはコチラ
提供: yonewiki
(→対数・指数函数 log/exp) |
|||
111行: | 111行: | ||
サンプル | サンプル | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
132行: | 132行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
386行: | 386行: | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
409行: | 409行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math TriFunc.html|サンプル実行結果]] | [[Media:JavaScript Math TriFunc.html|サンプル実行結果]] | ||
436行: | 436行: | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
471行: | 471行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math MaxMin.html|サンプル実行結果]] | [[Media:JavaScript Math MaxMin.html|サンプル実行結果]] | ||
505行: | 505行: | ||
サンプル | サンプル | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
521行: | 521行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math Absolution.html|サンプル実行結果]] | [[Media:JavaScript Math Absolution.html|サンプル実行結果]] | ||
532行: | 532行: | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
650行: | 650行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math FloorCeilRound.html|サンプル実行結果]] | [[Media:JavaScript Math FloorCeilRound.html|サンプル実行結果]] | ||
686行: | 686行: | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
717行: | 717行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math SqrtPow.html|サンプル実行結果]] | [[Media:JavaScript Math SqrtPow.html|サンプル実行結果]] | ||
828行: | 828行: | ||
− | < | + | <syntaxhighlight2 lang="javascript" line start="1"> |
<HTML> | <HTML> | ||
<HEAD> | <HEAD> | ||
859行: | 859行: | ||
</BODY> | </BODY> | ||
</HTML> | </HTML> | ||
− | </ | + | </syntaxhighlight2> |
[[Media:JavaScript Math ExpLog.html|サンプル実行結果]] | [[Media:JavaScript Math ExpLog.html|サンプル実行結果]] | ||
=== 乱数 random === | === 乱数 random === | ||
− | + | 乱数には生成方式がどうとか?確率分布がどうとか、そういった細かい議論が起こりますが、なんしか、このrandom関数を呼び出すと0~1の間の適当な値がほぼ無作為に生成されると考えていいと思います。ゲームや音楽、仕組みの中で何が起こるかわからなくするという要素を生み出すための数値生成と言えます。何が起こるかわか内から人生は面白い。運命が決まっているとしても、運命とはどうなっているのかわからないから面白い。生まれた瞬間からすべての未来が正確に予測される人生があったとしたら、それを知ったうえで生きる人生というのは面白いのでしょうか?わからないから面白い。 | |
+ | |||
+ | |||
+ | 自分の人生はどこへ向かっているのか?どこから来て、どこへ行くのか? | ||
+ | |||
+ | |||
+ | 生きるとは学ぶこと。 | ||
+ | |||
+ | |||
+ | 学ぶことは未来を変えること。 | ||
+ | |||
+ | |||
+ | 未来を変えるとは、正確な答えは無い。 | ||
+ | |||
+ | |||
+ | だけど未来の方向をある程度の範囲に収めることはできる。 | ||
+ | |||
+ | |||
+ | 自分はそのように解釈しています。ランダムとはどこへ向かうか限りなく制御できないものです。だからこそ面白さは作れる。もっとちがったことで意思決定をしている人間のランダムとはちがった面白さです。あのひと何を考えているかわからないのときの面白さは知能というものがつかさどっています。そしてソレを計算機で実現しようとする人工知能も面白い。ただし、とちらのわからないも制御できないからこそストレスが生まれることもありえます。不満。戦争。殺し合い。恨み。呪い。制御できないからこそ無数に感情が分岐される。それが平等なのか不平等なのか?わからない。多くの人間が最終的に快感を覚える程度のランダムに関する制御を行うのがプログラムする人の腕の見せ所だと思うのです。人間が不満ばかりをかかえるランダムはあまりいらない。 | ||
+ | |||
+ | |||
+ | そのさじ加減が難しいから、ゲームも売れるもの、売れないもの、いろいろと変化します。それくらいランダムは人間の社会生活を変える要素になっているのだと思います。争いが生じてゲームがきっかけで社会的な不幸が発生するのだとしたら、それは情報技術を売る側の怠慢なのではないでしょうか?わからないからこそ結末をある程度予測するということに挑戦し続ける必要はある。 | ||
+ | |||
+ | |||
+ | 長くなりましたが、そういう重要なことを決める関数です。 | ||
+ | |||
+ | |||
+ | 使い方は | ||
+ | |||
+ | |||
+ | *Math.random$($$)$ | ||
+ | |||
+ | |||
+ | とすることで、0~1の小数値が返却されます。どういった数値になるかは呼び出すまではわからないことになっています。 | ||
+ | |||
+ | |||
+ | |||
+ | 乱数で、ある確率に収束する、乱数を生成する場合。自分は10までのn進数法をよく使います。計算は長くなります。 | ||
+ | |||
+ | |||
+ | たとえば2進数のビットをすべて乱数で求める仕組みにする場合0~0.5まではビット値0それ以外はビット値1として必要な桁数分だけ繰り返して、2進数値を10進数に変換するなりして、その値によって動作を決定するというような作り方です。10進数でも同じです。値の範囲の取り方をn等分しますので、ここの偏りをつくれば出やすい数値とかが出てしまいます。n等分を均等にするとより分布が安定するかもしれないという予想においては、10進法と2進法による数値決定が一番やりやすいです。スロットなんかでは2進数のビット数くらいの確率で乱数を発生させて動作を決めているので、n進法乱数発生というのを使って、動きを真似してみたりすることを考えたことはあります。 | ||
+ | |||
+ | |||
+ | 乱数に関する数学的考察はいろいろとありますので、これ以上の複雑な話は別の記事にでも記述したいと思います。分布にはいろいろなものがありますので、一口に乱数といってもいろいろな性質をもつものがあることも頭の片隅においておくとよいと思います。なんなら、乱数 分布で検索してより詳細なことについて確認すると良いでしょう。 | ||
+ | |||
+ | |||
+ | <syntaxhighlight2 lang="javascript" line start="1"> | ||
+ | <HTML> | ||
+ | <HEAD> | ||
+ | <TITLE>JavaScript random</TITLE> | ||
+ | <!--[if lt IE 9]><script type="text/javascript" src="ExplorerCanvas-master/excanvas.js"></script><![endif]--> | ||
+ | <script type="text/x-mathjax-config"> | ||
+ | MathJax.Hub.Config({ | ||
+ | tex2jax: { | ||
+ | inlineMath: [['$','$'], ['\\(','\\)']], | ||
+ | processEscapes: true | ||
+ | }, | ||
+ | CommonHTML: { matchFontHeight: false }, | ||
+ | displayAlign: "left", | ||
+ | displayIndent: "2em" | ||
+ | }); | ||
+ | </script> | ||
+ | <script async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML"> | ||
+ | </script> | ||
+ | |||
+ | </HEAD> | ||
+ | <BODY> | ||
+ | JavaScript random<br /> | ||
+ | <SCRIPT Language="JavaScript"> | ||
+ | <!-- | ||
+ | for(var i=0;i < 1000;i++){ | ||
+ | document.write('乱数値 random ', i, '=', Math.random(),'<BR />\n'); | ||
+ | } | ||
+ | --> | ||
+ | </SCRIPT> | ||
+ | |||
+ | </BODY> | ||
+ | </HTML> | ||
+ | </syntaxhighlight2> | ||
+ | |||
+ | [[Media:JavaScript Math Random.html|サンプル実行結果]] | ||
+ | |||