PHP始めました。とりあえずrand変数を使ってみたい。


PHPを始めました。プログラミング経験ないのでひたすらアウトプットして勉強していきます。

とりあえず生活改善のプログラム作ろう

何もできない状態からスタートしましたが、なんも作れなかったら意味ないので、前から作りたいと思っていたプログラムをつくろうと思います。

作りたかったのは、2ケタ✕2ケタの計算問題を作成するプログラムです。

はい。くっそどうでもいい。笑
待ってください。これにはちゃんと理由があるんです。
実は2ケタ✕2ケタの計算って暗算でできるらしいんですよ。
これできたら、学校でマウントとれるんじゃね!?という好奇心から練習することにしたんです。
しかしながら、ネットから毎回問題を探すのはクソ面倒。

だったら自分で作るか、と思って作成に至りました。

作り方(超簡単)

完全初心者の僕でも、ちょっと勉強した知識で20分くらいでできました。
プログラミングって便利ですね。

書いたコードは総じてこれだけ。

 <?php 
  $answers = array();
  for($i=1; $i<=20; $i++) {
    $a = rand(1, 9);
    $b = rand(0, 9);
    $x = 10* $a + $b;
    // xは1つ目の数字。10a + bの値を代入。ただしaは1~9の数字にする

    $c = rand(1, 9);
    $d = rand(0, 9);
    $y = 10* $c + $d;
    // yは2つ目の数字。10c + dの値を代入。

    $answers[] = $x * $y;
    // 配列の最後に問題の答えを代入していく。

    // 以下のif構文で問題文を出力する
    if ($i < 10) {
      echo "<p> (0$i) $x ✕ $y =</p>";
    } else {
      echo "<p> ($i) $x ✕ $y =</p>";
    }

  }

  // 答えをページの下端に出力していく
  foreach ($answers as $answer) {
    echo "<a>$answer, </a>";
  }

 ?>

とにかくrand使ってみたかったというのもありますが、思い付きでパパっと作れました。
工夫したところはこんなところ。

  • 問題番号が一ケタの場合は先頭に「0」をつけるようにしたこと

  • foreachをどうにかして有効活用したこと

完成図

CSSとか何も記述してないので、実際にWebで表示するとこうなります。

ただこれ、紙に印刷するので、印刷プレビューを開くとこの通り。

いい感じに作成できました。

追記 完全に遠回りをしていた

1つひとつランダムな数字を生成していたのですが、コメントで親切な方からご指摘が。

$x = rand(10, 99);
$y = rand(10, 99);

自分の馬鹿さが早速出てしまい本当に恥ずかしいのですが笑、確かにこれで綺麗にまとまりますね。
指摘してくださった方、ありがとうございます!

まとめ

  • 今回作ったもの
    • 2ケタ✕2ケタの計算問題メーカー
  • 工夫したところ(変数など)
    • rand(最小値, 最大値)
    • foreach (配列 as 変数) { 処理; }

感想:プログラムって便利だなぁと思いました。また思いついたら作ります。