裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ダメ出し:よく分からないけど,ダメ

2012年08月27日 | ブログラミング

バク=スネッペンのゲーム」は,ちゃんとプログラムできていない。
プログラムの仕様(ゲームのルール)がよく分からないので,書き直しできないなあ。

# 種の数
n <- 100
x <- runif(n, 0, 1)
z <- numeric(0)
# すべてを2/3以上にする操作
repeat {
    x[0] <- 1                    # R の添え字は 1 から始まる
    x[n + 1] <- 1
    xmin <- which.min(x)         # xmin が 1 や n のときの処理はこれではだめ
    if (x[xmin] < 2/3) {         # x[0] には代入できないし,x[n+1] が最小になったら要素が n+1 に加わる
        xr <- runif(3, 0, 1)
        x[xmin - 1] <- xr[1]
        x[xmin] <- xr[2]
        x[xmin + 1] <- xr[3]
    } else break
}

# sampleを100個
for (i in 1:100) {
    y <- 0
    # 最小のものにある値を代入
    x[0] <- 1
    x[n + 1] <- 1
    xmin <- which.min(x)
    xr <- runif(3, 0, 1)
    x[xmin - 1] <- xr[1]
    x[xmin] <- xr[2]
    x[xmin + 1] <- xr[3]
    # すべてを再び2/3以上に
    repeat {
        x[0] <- 1
        x[n + 1] <- 1
        xmin <- which.min(x)
        if (x[xmin] < 2/3) {
            xr <- runif(3, 0, 1)
            x[xmin - 1] <- xr[1]
            x[xmin] <- xr[2]
            x[xmin + 1] <- xr[3]
            y <- y + 1
        } else break
    }
    z <- rbind(z, y)      # y は 1 個の要素,z はベクトルなので,せめて z <- c(z, y)
}                         # しかし,それは間違った方法

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:match は遅い | トップ | ダメ出し:よく分からないけ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事