我有以下代码试图模拟金属原子沉积在冷基板上;但是,它在无限循环中运行。
任何人都可以看到我犯错的地方吗?
l <- 20
n <- 2000
e <- 1000
lsize <- matrix(0,l,l)
deposits <- rep(0,n)
avg.deposits <- rep(0,n)
prob <- rep(0,n)
n.deposits <- rep(0,n)
for(m in 1:e){
for(j in 1:l){
for(k in 1:l){
lsize[j,k] <- 0
}
}
for(i in 1:n){
ra <- runif(1)
x <- floor(1+l*ra)
ra <- runif(1)
y <- floor(1+l*ra)
lsize[x,y] <- lsize[x,y]+1
s <- 0
for(j in 1:l){
for(k in 1:l){
if(lsize[j,k] <- 1){
s <- s+1
}
}
}
n.deposits[i] <- n.deposits[i]+s
}
}
for(i in 1:n){
avg.deposits[i] <- n.deposits[i]/e
prob[i] <- avg.deposits[i]/(l*l)
deposits[i] <- i
}
plot(deposits, prob)
答案 0 :(得分:1)
没有无限循环问题。
如果您继续使用较小的property2
,var fb = new Firebase("http://a_firebase.firebaseio.com");
var ref = fb.child("/path/to/child");
var newPriority = (new Date()).getTime(); //timestamp, as you mentioned
var data = {
"property1": {".value": "updated_val", ".priority": newPriority},
"property2": {".value": "updated_val2", ".priority": newPriority},
".priority": newPriority
}
ref.update(data);
,l
参数运行代码,则很容易检查。在增加任何提到的参数时,您的代码会以次优(在这种情况下为超线性)进行扩展。
明显的观点:
n
。e
。您不必多次调用相同的函数。在循环外调用一次以生成所需的随机数,然后在循环中只访问行中的下一个元素。lsize
和runif()
语句打印出您使用的循环计数器。尝试使用小值来确保他们的程序符合您的要求,然后将计数器设置为数千个。print
等于cat
的所有实例,没有理由按顺序遍历a < 0.5
的所有元素。 4
就够了。