情報科学演習 実習課題 2017.10.16

Back to text page


乱数について説明しておきます.これまで何度か以下に示すサイコロのプログラムを 紹介しましたが,そのときのやり方で乱数を発生させることが出来ます.以下の 手順に従って試してみてください.


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

main()
{
    srand((unsigned) time(NULL));
    
    int dice = rand() % 6 + 1;

    printf("%d\n", dice);

    return(0);
}


実習課題

  1. 整数型演算の理解

    以下に示す演算を行って,整数型の演算結果を確かめて理解を深めましょう.単純に printf の括弧の中に入れて試すので構いません.

    1 / 3
    2 / 3
    4 / 3
    1 % 3
    2 % 3
    4 % 3
    10 % 5
    

  2. 乱数の練習

    2桁の整数を乱数を利用して発生させて表示させましょう.2桁の整数とは10から 99までですので,全部で何種類あるか考えてから準備してください.以下のよう に結果を表示することにしましょう.

    Obtained random number: 22
    

    表示させるための命令の部分は以下に示すように一度乱数の値を変数に入れてからにしてみましょう.

    
    	printf("Obtained random number: %d\n", num);
    


    二桁の整数を得るもう一つの考え方として,必要な数の最小値と最大値から考えることもできます.二桁の整数の最小のものは10ですが,剰余は割り切れる場合0になる可能性がありますので,

    	rand() % 何かの数 + 10;
    


    のように最後に10を加える必要があります.また,そうすると,二桁の整数の最大のものは99ですので,10を引いて89まで乱数として出てくるようにしないといけません.余りの最大値が89ということはどんな数で割ればよいでしょうか? これは簡単ですね.
  3. 前問の拡張

    3桁の整数,そして4桁の整数をそれぞれ一つずつ乱数を利用してランダムに表示させるプログラムを作成しましょう.

  4. 四則演算

    2から9までの整数を2つ乱数で発生させて,それらの和と差を求めるプログラム を作りましょう.表示は以下のようにしてください.

    Obtained random number: 5 and 9
    Sum of them: 14
    Difference between them: -4
    
    

  5. 乱数の範囲

    -10から10までの整数をどれか一つ乱数で発生させるプログラムを作ってみましょう.

  6. 値の入れ換え

    四則演算では無いですが,変数に代入した値を「入れ換える」操作を考えてみま しょう.次に示すプログラムの途中に入れ換えの式を入れて完成してください.

    #include <stdio.h>
    
    main()
    {
        int m, n, tmp;
    
        m = 1;
        n = 2;
    
        printf("m = %d and n = %d\n", m, n);
    
    
    ここに入れ換えの処理を入れる(全部で3行)
    
        printf("Exchange the values of m and n\n");
        printf("m = %d and n = %d\n", m, n);
    
        return(0);
    }
    
    

    m = 1 and n = 2
    Exchange the values of m and n
    m = 2 and n = 1
    
    

    型の宣言のところで,tmp という変数を定義していることに注意してください.変数名はtemporal (一時的)から取っていますが,この変数は何のために使用するのでしょうか?代入操作をどう組み合わせればよいのか,がポイントです.
  7. 実数の乱数生成

    乱数を発生させる関数 rand() は整数しか取り扱えません.そこで,実 数の乱数を用意するためには,得られた整数を加工する必要があります.-1から1の 範囲で少数第2位までの実数を乱数で発生させる方法を考えてみましょう.

    Obtained random number: -0.49
    

    まずは整数を乱数により用意して,それを小数に変換するという手準になります.

Back to text page