確率とは、乱数とは

JavaScript

この画像をみてほしい。

1年前ぐらいかな、この場面を撮影したのは。

「おうじゃのつるぎ」はMOTHER2で、レアドロップに分類されるアイテム。

128分の1で敵がアイテムを落とす。

今現在、ゲーム作成をしていて、ふと考えた。

確率とは何ぞ?

乱数とは?

偏りはもちろん出るはず。

この「おうじゃのつるぎ」が欲しいがために約2時間ぐらい粘ったのを思い出した。

でも人によっては1日経っても出ない場合もあるし、その逆もまたしかり。

検証がしたくなった。

そして、自作した。

確率とは、乱数とは

JavaScriptで0~9の整数をランダムで取得。

合計10の数字の内、ボタンを押す度に1個だけ拾われる。

確立にして10分の1。

5(何で5かは、解る人は直ぐに解るでしょう)を拾えば当たり。

これを元に検証を重ねていきたい。

とりあえず、コード。

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>確率とは、乱数とは</title>
        <script src="src/random_number.js"></script>
        <script src="src/jag.js"></script>
        <link rel="stylesheet" href="style.css">
    </head>

    <body>
        <img src="img/jag.jpg" id="jag">
        <a id="push">GO!</a>
        <div>
            <p id="jagTimes"></p>
        </div>
        <div id="randomBox">
            <p id="randomNumber"></p>
        </div>
    </body>
</html>
@charset "utf-8";

/* Reset CSS */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure, 
footer, header, main, menu, nav, section, summary,
time, mark, audio, video{
    margin:0;
    padding:0;
}

article,aside,details,figcaption,figure,
footer,header,main,menu,nav,section{
    display:block;
}

html{
    -webkit-text-size-adjust: 100%;
}

body{
    color: #59220d;
    line-height: 1.5;
    font-size: 14px;
    font-family: sans-serif;
}

img{
    border: 0;
    max-width: 100%;
    height: auto;
}

ul,ol{
    list-style-type: none;
}

table{
    border-collapse: collapse; 
    border-spacing: 0;
}

img, input, select, textarea{ 
    vertical-align: middle;
}

a{
    color: #59220d;
    transition: 0.5s;
}
a:hover{
    color: #d53e04;
}
a:hover img{
    opacity: 0.7;
}

/* Reset CSS ここまで*/

/* Pull to refreshを無効化 */

html {
    overflow: hidden;
    /* 背景を黒にする */
    background-color: #000;
}

body {
    height: 100vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* 画像 */

img {
    height: 50%;
    width: 50%;
    margin: auto;
    display: block;
}

/* ボタン */

a {
    border-radius: 50%;
    border-color: #d53e04;
    border: 5px solid;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100px;
    height: 100px;
    background: #c0c0c0;
    color: #FFF;
    text-decoration: none;
    text-align: center;
    margin: 0 auto;
    cursor: pointer;
}

/* 記録 */

div {
    text-align: center;
    font-size: 3em;
}
p {
    color: #fff;
}

// ボタンを押したときの処理

window.onload = function(){

    let pushButton = document.getElementById("push");
    let jagImage = document.getElementById("jag"); 
    let jagTimes = document.getElementById("jagTimes");
    let randomBox = document.getElementById("randomBox");
    let numberOfTimes = 0;

    jagTimes.innerHTML = numberOfTimes + "回目";

    pushButton.addEventListener("click", function(){

        // 生成した乱数を取得(0~9)
        // とりあえずここでは、5を当たりとする
        // 2秒後に元の画像に戻す

        let rn = random.number()

        if(rn === 5){
            jagImage.src = "img/jag2.jpg";

            window.setTimeout(function(){
                jagImage.src = "img/jag.jpg";
            }, 2000);
        }

        // ボタンを押した回数を記録

        numberOfTimes++;

        // HTMLに記載

        jagTimes.innerHTML = numberOfTimes + "回目";

        // 新しいHTML要素を作成

        let newElement = document.createElement('p');
        newElement.textContent = rn;

        // 指定した要素の中の末尾に挿入

        randomBox.appendChild(newElement);

    }, false);
}
class random {

    static number(){
        let randomNumber = Math.floor(Math.random()*10);
        console.log(randomNumber);
        return randomNumber;
    }
}

ボタンを押した回数と拾った数字が記入されるようにした。

どう展開させるかな?