無駄と文化

実用的ブログ

魔法は無い

f:id:todays_mitsui:20181207152150p:plain

高度な技術は、ともすると魔法のように見えるものです。
実際、世の技術は「複雑さや煩雑さを隠ぺいしてシンプルに目的を達成するために発達してきた」という側面があるので、技術の裏側について詳しくない人からして魔法のように見えるのは当然と言えば当然です。

エンジニアが作るシステム・プログラムも同様に、技術に詳しくない人から見れば魔法のように見えるようです。

私は、エンジニアでない人と技術との向き合い方はそのようなもので構わないと考えています。
しかし、技術を身に付けたいと願って自ら技術の世界に足を踏み入れた人はこの限りではありません。

魔法使いになるためにいちばん最初にするべきことは『魔法は無い』と自覚する事だと思います。


一見魔法のように見える技術でも、その裏側には馬鹿馬鹿しいほど地道で泥臭い実装が隠されているというのはよくある事です。
技術者として魔法の(ように見える)技術を身に付けるには、馬鹿馬鹿しいほど地道に泥臭い実装に取り組み、自分で手を動かしつづけていく必要があります。

「魔法は無い、だから地道に手を動かすしかないんだ」と自覚して初めて、技術者への道の最初の一歩を踏み出すことができます。
魔法使いを志す人はまず、『魔法は無い』ということから始めなければいけません。


私からは以上です。

JavaScript で、指定した範囲の整数をランダムに返す関数

やっていきましょう。

実装

/**
 * 指定した範囲の整数をランダムに取得する
 * 
 * @param {number} min ランダムに取得したい整数の下限
 * @param {number} max ランダムに取得したい整数の上限
 * @returns {number} min 以上 max 以下の整数
 */
function randomInt(min, max) {
  var interval = max - min + 1;

  return ~~(Math.random() * interval + min);
}

試運転

{
  const min = 1;
  const max = 5;
  const n   = 1000000;

  // 集計バケツの生成と初期化
  const bucket = Object.create(null);
  for (let i = min; i <= max ; i++) {
    bucket[i] = 0;
  }

  // 試運転
  for (let j = 0; j < n; j++) {
    bucket[randomInt(min, max)]++;
  }

  console.table(bucket);
}

結果

(index) Value
1 199287
2 199771
3 200078
4 200415
5 200449

まとめ

はい、


私からは以上です。