C言語のきほん「数当てゲーム 」当てさせる数をランダムにする(3)

スポンサーリンク
C言語

前回では、乱数生成のための「種」の設定を行った。

ところで、rand関数が生成する値の範囲は、0~RAND_MAXである。

しかし、通常は、ある特定の範囲の乱数が必要である。
例えば、「0以上99以下の乱数」が必要であれば、

rand() % 100;

とする。

非負の整数値を100で割った剰余(あまり)が、0、1,・・・99となることを利用する。

それでは、「数当てゲーム」の「当てさせる数」を「0以上99以下の乱数」とするプログラムをご紹介しよう。

なお、本プログラムは、
 Windows 11 Home(23H2)上で、  Visual Studio Code(1.92.2)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で  コンパイルしている。

//数当てゲーム 当てさせる数は0~99の乱数

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int no;
    int ans;

    srand(time(NULL));
    ans = rand() % 100;

      printf("0から99までの整数を当ててください!\n");

    do
    {
       printf("いくつでしょうか:");
       scanf("%d",&no);

       if (no > ans)
        printf("もっと小さいです。\n");
       else if (no < ans) 
        printf("もっと大きいです。\n");

    } while (no != ans);

    printf("正解です\n");

    return 0;
}

実行結果

0から99までの整数を当ててください!
いくつでしょうか:77
もっと小さいです。
いくつでしょうか:76
もっと小さいです。
いくつでしょうか:55
もっと小さいです。
いくつでしょうか:45
もっと大きいです。
いくつでしょうか:48
もっと大きいです。
いくつでしょうか:51
正解です

これで、当てさせる数がランダムになり、ゲームが格段に面白くなった。

なお、平均的に最短で当てる方法をご紹介しておこう。

最初に49を入力し、それより大きいか、小さいかによって、79あるいは29を入力するなどして、半分ずつに絞り込んでいく。

参考)新・明解C言語 中級編 柴田 望洋(著)

コメント

タイトルとURLをコピーしました