が話題なのでRでやっといた。
stap <- "STAP" tmp <- "" t1 <- proc.time()["elapsed"] while(tmp != stap){ tmp <- paste(sample(LETTERS, size=4, replace=TRUE), collapse="") print(tmp) } t2 <- proc.time()["elapsed"] paste("STAP細胞の作成に", round(t2 - t1), "秒かかりました")
[1] "STAP細胞の作成に 7 秒かかりました"
たまたま早く作成できたけれども、重複を許してサンプリングしてて、通りの細胞が論理的に考えられるなか、サンプリングの速度を適当に計算して作成にかかる時間の分布が取れるはずなので、やる気のある研究者というか当事者はやってみたらいいんじゃないかな(適当
時間がかかりすぎるので30回くらいやってみた。
niter <- 1000 res <- numeric(niter) pb <- txtProgressBar(max=niter, style=3) for(j in seq(niter)){ setTxtProgressBar(pb, j) tmp <- "" t1 <- proc.time()["elapsed"] while(tmp != stap){ tmp <- paste(sample(LETTERS, size=4, replace=TRUE), collapse="") #print(tmp) } t2 <- proc.time()["elapsed"] res[j] <- t2 - t1 }
Pythonで乱数発生ってあんまりやったことないけれども、こちらからぱくってやった。アルファベットの作成はこちら。
import random # モジュールのインポート alphabet = [chr(i) for i in xrange(97, 123)] stap = "stap" tmp = "" while tmp != stap: tmp = "" for i in range(4): tmp += alphabet[random.randint(0, len(alphabet)-1)] print tmp
どちらをやるにせよ、並列化したら楽しいと思う。