Googleでハッピーハッピーハッピー(Google Apps Scriptを利用したランダム抽選) #猫ミーム

おはこんばんちわ
初号機です

なんで最近こんな登場回数が多いかと言うと・・・・
実は弊社のブログは持ち回り制になっております

私とチームの皆様(2号機とか3号機とか、あと2人くらい)で
無駄にGAS(Google Apps Script)で作成したランダム抽選を行い
月曜に通知が届くという仕組みです

この抽選君がすごい私を選ぶんです。。
【基本AIに書いてもらおう】ってあるのは時間かけすぎちゃだめよって意味も込めてなんですが

AIに書いてもらうとですね、なんと言いますか

そう


【味がないスルメ噛んでる感じ】

のブログが出来上がっちゃうんですよね
ブログってその人の人間味とか、不出来な部分とか
そういうのを含めて楽しむものなのかなって思うわけです

ですので、AIに貰うのは【ネタ提供まで】
あくまで書くのは【私自身】

というのをルールとして書いたりしてます
かと言って、自身の筆に拘りすぎて時間かけたら本末転倒です
その場合は、容赦なく叱りますし
私も代表に叱られます

バランスが大事ですね

って事でですね、本題にいくのですが
今回の本題は前段で話しました【ランダム抽選】の作成方法でございます
コードはこんな感じ

const randomNumber = Math.random();
console.log(<乱数>\n${randomNumber});
for (let i in IDs) {
i = Number(i);
if (1 / IDs.length * i <= randomNumber && randomNumber < 1 / IDs.length * (i + 1)) { var Id = IDs[i]; break; }
}

良く分かる(と思っている)説明!

①まずMath.random()にて0~1のランダム数を生成します(0.274214214726とかが生まれます)
②logは出力してるだけです
③forで繰り返していきます(繰り返す数はブログの担当人数→を予め配列にしておきます)
※IDs変数に入れておく
④if内の処理 1 / IDs.length * i <= randomNumber
→1/ブログ担当者の人数(5人なら0.2)×繰り返し回数(1回目なら0)
 がランダム生成数以下であること

 かつ

→randomNumber < 1 / IDs.length * (i + 1)
 ランダム生成数が1/ブログ担当者の人数(5人なら0.2)×繰り返し回数(1回目なら0)
 であること

であればブログ担当者配列(IDs)の該当配列を変数idに格納してBreakする

っ形です


・・・・・・



全然わかり易くない



コードにコメントを入れてみましょう


・ブログ担当者(IDs)は5人と仮定

const randomNumber = Math.random();
→0.3 が生成されました

for (let i in IDs) {
→0~4を繰り返します。最初は0
i = Number(i);
→0を数値形式に変換

if (1 / IDs.length * i <= randomNumber && randomNumber < 1 / IDs.length * (i + 1))
→1 / IDs.length * i は1 / 5 * 0 なので0
→ 1 / IDs.length * (i + 1)は 1 / 5 * (0 + 1)なので0.2
→全て変換するとif (0 <= 0.3 && 0.3 < 0.2)
0.3(randomNumber)は0.2より大きいのでfalse
→for先頭へ


次回はiが全て1になるので
if (0.2 <= 0.3 && 0.3 < 0.4)
なのでforぬける

{ var Id = IDs[i]; break; }
→ブログ担当者は配列の2番めの人に
}


という形ですね

なんとなくちゃんと説明できたと思います(えっへん)

コードはアイデアさえあれば可能性は無限大です!
是非色々つかっていきましょう!


我々ヒカリシステムでは、Googleに関する便利な情報を
発信しています、また法人様向けのサポートも行っております

是非お問い合わせください!

小山内 勝

幼い頃は劇団に所属し映画ピンポンなどに出演していた。

現在は社内のシステムアドバイザー:現場を知るプログラマーとして、社内の問題に対してITを活用し最短で解決できるスキルを身に着けている。趣味は釣り!三度の飯よりバスが好き!

関連記事