メモの日々


2007年07月25日(水) [長年日記]

[c][dev] m〜nまでの乱数

Cのrand()を使ってm〜nまでの整数の乱数を得るには次の計算で合っているだろうか。

(int)(rand() / (RAND_MAX + 1.0) * (n - m + 1)) + m

n - m < RAND_MAX でないと困りそう。

自信がないので次のプログラムで試した。

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

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

int main() {
    int i;
    int m = 10;
    int n = 29;
    int counter[20] = {0};

    printf("RAND_MAX=%d\n", RAND_MAX);
    for (i = 0; i < 100000; i++) {
        int r = my_random(m, n);
        if (r < m || r > n) {
            printf("error : %d is returned.\n", r);
            break;
        }
        counter[r - m]++;
    }

    for (i = 0; i < n - m + 1; i++) {
        printf("%4d : %d\n", m + i, counter[i]);
    }

    return 0;
}

実行結果が次のようになったので、計算式は合っていそう。

RAND_MAX=2147483647
  10 : 4918
  11 : 5075
  12 : 4934
  13 : 4998
  14 : 5007
  15 : 5182
  16 : 5044
  17 : 4972
  18 : 5023
  19 : 4885
  20 : 5026
  21 : 5018
  22 : 5033
  23 : 4926
  24 : 5008
  25 : 4917
  26 : 4917
  27 : 5100
  28 : 5011
  29 : 5006

[サッカー] アジアカップ 日本vsサウジアラビア

準決勝。日本の先発は変わらず。気合の入った中澤の表情が印象的。解説にセルジオ越後さんが加わって、悪くなかった。

むしゃくしゃするのでオレの日本代表メンバーを選出するー。

          播戸(佐藤)        高原(前田)
    松井(山瀬,二川)          俊輔(太田,水野)
          遠藤(小野)        阿部(鈴木)
 相馬(中田) 闘莉王(山口) 中澤(岩政) 駒野(市川)
                   川口(川島)

今回一番物足りないのはサイドバックで、左は相馬に期待したい。縦に走れー。右は人材難。加地には可能性を感じない。市川はダメなのかなあ。FWは高原の相棒が問題だがやはり人材難。今なら播戸がいいと思うけどガンバでレギュラーでもないからなあ。得点ランキングを見ると佐藤か大久保になっちゃうのか。達也の復活が待たれる。大黒はどうしているのか。2列目は人材たくさん。野沢も使ってみたいしなあ。パスするだけでなく飛び出せる奴がいいんだけど。遠藤は憲剛の所で使いたい。鈴木は不動の活躍だが阿部を上げる方が魅力あるのではないか。小野もなあ。小笠原は鹿島で機能すれば可能性あるか。センターバックに岩政も試したい。坪井は足痙攣するからダメ。キーパーはよく分からないや。うーん、メンバー選びするなら3バックの方がいいかもしれん。

新聞メモ

7月25日の産経新聞より。

韓国 過熱する海外布教

「韓国にはプロテスタントを中心に人口の約3分の1にあたる1500万人ものキリスト教徒がいるといわれる。」とのこと。キリスト教が韓国でそんなに広まっているとは知らなかった。不思議。

やること

  • ズボンを洗う