裏 RjpWiki

文字通り,RjpWiki の裏を行きます
R プログラム コンピュータ・サイエンス 統計学

決めうちしないプログラム

2012年04月13日 | ブログラミング

Rで「ガチャとは心の所作」
Re: Rで「ガチャとは心の所作」について


ご指名があったことに今頃気づいたので,書いて見ました。
元のプログラムにあった iter.max = 10000 は明らかに大きすぎるし,合理的な根拠があってのことではないので,このような値に左右されないようにプログラムしてみるだけで,びっくりするほど(??)効率が上がる。

gacha.sim4 <- function(prob, nop = 10000) {
  n.items <- length(prob)
  nop.result <- numeric(nop)
  for (i in seq(length = nop)) {
    x <- sample(n.items, 100, TRUE, prob) # 100 個で足りなきゃ...
    repeat {
      y <- unique(x)
      if (length(y) == n.items)
        break
      x <- c(x, sample(n.items, 100, TRUE, prob)) # 増やします
    }
    y <- y[n.items]
    nop.result[i] <- which(x == y)[1]
  }
  list(result = nop.result, prob = prob)
}

a_bicky さんの gacha.sim2 とも比較してみた(replications=10 で)。

> library(rbenchmark)

> p <- rep(1, 6)
> benchmark(gacha.sim(p), gacha.sim2(p), gacha.sim4(p), replications = 10)
           test replications elapsed relative user.self sys.self user.child sys.child
1  gacha.sim(p)           10 101.504 22.32329    89.575   12.667          0         0
2 gacha.sim2(p)           10  80.560 17.71718    62.859   18.210          0         0
3 gacha.sim4(p)           10   4.547  1.00000     4.499    0.079          0         0

> p <- c(100, 50, 10, 10, 3, 1)
> benchmark(gacha.sim(p), gacha.sim2(p), gacha.sim4(p), replications = 10)
           test replications elapsed  relative user.self sys.self user.child sys.child
1  gacha.sim(p)           10 663.660 63.127556   639.333   22.399          0         0
2 gacha.sim2(p)           10  75.856  7.215448    57.587   18.606          0         0
3 gacha.sim4(p)           10  10.513  1.000000    10.371    0.210          0         0


コメント

車輪の再発明

2012年04月11日 | ブログラミング

やりたいことは,たいてい用意されているとはよく言われること。

久保さんのグラフ描きについても,example(boxplot) で,参考になる例が見つかる。

#################### 久保さんが書いたプログラム ##############
# 作図例題のための架空データを生成
N.lv <- 5
x <- factor(rep(LETTERS[1:N.lv], each = 20))
y <- rnorm(100)
grp <- factor(rep(c("G1", "G2"), 50)) # Group 1 and 2

# まず,わくだけ描く
boxplot(y ~ x, border = NA) # border = NA は姑息なかんぢ……

# 二種類の箱ヒゲを左右にずらして描く
s <- grp == "G1"
bx <- boxplot(y[s] ~ x[s], plot = FALSE)
bxp(
    bx, at = 1:N.lv - 0.15, boxwex = 0.25,
    add = TRUE, axes = FALSE, # これを指定しないと「ずれた」x-axis を描く
    boxcol = rgb(0, 0, 0, 0.2),
    boxfill = rgb(1, 0.5, 0, 0.5)
)
s <- grp == "G2"
bx <- boxplot(y[s] ~ x[s], plot = FALSE)
bxp(
    bx, at = 1:N.lv + 0.15, boxwex = 0.25,
    add = TRUE, axes = FALSE,
    boxcol = rgb(0, 0, 0, 0.2),
    boxfill = rgb(0, 0, 1, 0.5)
)
#################### example を書き換えてみたもの ##############
boxplot(y ~ x,
        boxwex = 0.25, at = 1:5 - 0.2,
        subset = grp == "G1", col = rgb(1, 0.5, 0, 0.5),
        xlab = "", ylab = "",
        xlim = c(0.5, 5.5), ylim = c(-3, 3), yaxs = "i", xaxt="n")
boxplot(y ~ x, add = TRUE,
        boxwex = 0.25, at = 1:5 + 0.2,
        subset = grp == "G2", col = rgb(0, 0, 1, 0.5),
             xaxt="n")
axis(1, 1:5, LETTERS[1:5])

コメント

驚くにはあたらないとおもうけど??

2012年04月03日 | 雑感

裕福なスマートフォンユーザーはゲームやTwitterはあまり利用せず、ニュースや旅行、金融関連のアプリを好んで使う傾向にあるという。全体の利用実態と比べると対照的だ

この手の記事,いったい何が言いたいんだろうか?
「一般庶民感覚とはずいぶん違うもんだなあ」といううらやまし感?その裏返しで,反感?
何が言いたいのか,ちっともわからない。

裕福なスマートフォンユーザは,ゲームや Twitter なんかやる暇はないし,興味はないだろう。逆に言えば,ゲームや Twitter は,いわゆる庶民(大多数,99%くらいか?)を対象にしているんだろう。一日が24時間であるのは,貧民も富豪も同じ。それこそ,ゲームや Twitter にうつつを抜かしているから,いつまでもいつまでも貧乏暮らしをしなければならないのだろう。いい加減,目覚めるべきだぜ!!

コメント

formatR ではないけれど...(プログラミング書式)

2012年04月03日 | ブログラミング
    • この関数ソースは自分にとって読みにくいので、書き方を変えてみる
	if(type == "circular"){
		if(ny !=n){
			stop("length mismatch in convolution")
		}
	}else{
		n1 <- ny-1
		x <- c(rep.int(0,n1),x)
		n <- length(y <- c(y, rep.int(0,n-1)))
	}
このようにするのが普通???かと(かなり妥協したが)
	if (type == "circular") {
		if (ny != n) {
			stop("length mismatch in convolution")
		}
	} else {
		n1 <- ny-1
		x <- c(rep.int(0, n1), x)
		n <- length(y <- c(y, rep.int(0, n-1)))
	}
コメント