C言語関係掲示板

過去ログ

No.426.m〜m+n-1の間の乱数

[戻る] [ホームページ]
No.2963

乱数
投稿者---(2002/10/17 20:41:46)


「整数m,nを与えると、m〜m+n-1の間の整数の関数を返す関数int irandom(int,int)を作れ。また、その関数を利用して25000から25255までの乱数を10000個生成して、その中の偶数と奇数の数を求めよ。」という問題があるんですが、偶数と奇数の区別は
#include <stdio.h>
int main(void)
{
int i;
printf("数字を入力してください: ");
scanf("%d", &i);
if((i%2)==0) printf("偶数");
if((i%2)==1) printf("奇数");
return 0;
}
でいいことは分かるんですが、その後はどうすればいいのか分かりません。力になってください。
返信は上記のe-mailアドレスに御願いします。

No.2975

Re:乱数
投稿者---かずま(2002/10/18 03:08:47)


>「整数m,nを与えると、m〜m+n-1の間の整数の関数を返す関数int irandom(int,int)を作れ。
> また、その関数を利用して25000から25255までの乱数を10000個生成して、
> その中の偶数と奇数の数を求めよ。」という問題

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

#define N      10000
#define FIRST  25000
#define LAST   25255

int irandom(int m, int n)
{
    return rand() / (RAND_MAX + 1.0) * n + m;
}

int main()
{
    int i, odd = 0;

    srand(time(0));
    for (i = 0; i < N; i++)
        odd += irandom(FIRST, LAST - FIRST + 1) & 1;
    printf("even = %d, odd = %d\n", N - odd, odd);
    return 0;
}