ランダム独り言

記事の作成日 : 2020/02/29

ランダムで単語単語を構成していって表示します。
支離滅裂なことを表示するだけです。需要は、ないですかね。。

面白ければいいんです。はい。
時々、名言っぽいのが飛んできます。 例えば
動物園 に 修羅場 いいじゃない
私 の 予習 が 中央銀行
昨日 が言った 予習 の 旅
みんな と信じて さいころ が 数えた
ヒーロー と信じて 因数分解 に 餅つき
私 今年 北極
とか,,,? 生成された”独り言”に責任は持てませんので!!

全く関係のない話
脆弱性 という言葉をしていますか?
私は、これを「…じゃくせい」と呼んでいました。
ごまかしていますね( ´∀` )

やはり、プログラム関係のサイトをいろいろ見ていると、「脆弱」「脆弱性」とか出てきます。
読み方何?と思って調べてみると、「ぜいじゃく(脆弱)」と読むらしいです。

これで一つ賢くなりました。(==)

先にサンプル

何通り
ここを押して更新

仕組み

単語をランダムで選択して一つの文を生成しています。
構成を文字で表現するとこうなります。
ms1 , ms2 , ms3 , ms2 , ms4
私 、は 、ホラーゲーム 、で 、餅つき
ms2 は、「は、と、に、か、へ、も」などが入るので、使いまわしています。

ms1~ms4 までに単語の辞書を作成しています。(正確には "配列" ですかね。)自分が知っている単語のごく一部です。

辞書を作成、取得する(簡易版)

辞書を作成するのは簡単です。次のようなコードになります。
let ms1 = ['私','あなた','自分','猫','犬'];

辞書から単語を取得するには、
var str = ms1[3];

になります。ここから取得できる文字は、 になります。

これの応用で ms1~ms4の辞書を作ったり、取得したりします。ランダムに取得するには、Math.random() と Math.round() などを使います。

辞書からランダムに単語を取得する関数を作る。

ランダムに単語を取得するコードです。
function msCall(index) {
    var len = index.length - 1;
    var out = index[Math.round(Math.random() * len)];
    return out; // return で結果を返します
}

このコードは、配列(辞書)からランダムに一つを取得するコードで、ms1以外でも使用できます。
やろうと思えば一行で完結します。
return index[Math.round( Math.random() * (index.length - 1) )];

ここでは配列ではなく、辞書と書いていきます。

var len

ここでは、辞書の長さが len に入ります。
長さを調べるためには、 .lengthを使います。
- 1 は次の行の計算に合わせるためのものです。

var out

最後にout に入るのは、辞書からランダムに一つだけ取り出された、単語です。
Math.random()から 0. から 1. までの小数が取得できるのですが、これに辞書の長さ分をかけます。( Math.random() * len )
そして、そのままだと、小数があるので、四捨五入 Math.round()して小数をなくします。

実装コード


<script>
    // 宣言 ms?は単語 elemは楽するため
    let elem;
    let ms1 = ["", "私", "あなた", "みんな", "だれか",...];
    let ms2 = ["", "は", "が", "に", "と", "へ", "の",...]; // 2回使用する
    let ms3 = ["", "みかん", "バナナ", "ぽっきー", "宇宙",...];
    let ms4 = ["", "食べた", "滑った", "動いた", "旅",...];
    // 全ての組み合わせの数
    let all = ms1.length * ms2.length * ms2.length * ms3.length * ms4.length;

    // 
    function msCall(index) {
        var len = index.length - 1;
        var out = index[Math.round(Math.random() * len)];
        return out;
    }

    function update() {
        elem = document.getElementById('message');
        elem.innerHTML += msCall(ms1) + " " + msCall(ms2) + " " + msCall(ms3) + " " + msCall(ms2) + " " + msCall(ms4) + "<br>";
    }
</script>

<!-- ここから -->
<div onclick="update()" id="allnum" style="font-size: small; background-color: rgba(75, 219, 255, 0.575);text-align: center;width: 50%;">何通り</div>
<script>document.getElementById('allnum').innerText = "全部で " + all + ' 通り'</script>
<!-- ここまでは辞書から何通りの組み合わせがあるかを表示するためのもの -->

<!-- ここで update() を実行する -->
<div onclick="update()"style="font-size: x-large; background-color: rgba(75, 75, 255, 0.575);text-align: center;">ここを押して更新</div>

<!-- message に 結果を表示していく -->
<div id="message" style="line-height: 2;text-align: center;"></div>



<<前 : classをいつでも変更する
>>次 : 動画IDを入力してYoutubeの動画を表示する