Andrie..
11
以下代码将继续运行三秒钟,然后停止并打印总计.
x
duration
heads
tails
while(Sys.time() <= x + duration){
s
if(s == 1) heads
cat(sample(0:1, 1))
}
cat("heads: ", heads)
cat("tails: ", tails)
结果:
001100111000011010000010110111111001011110100110001101101010 ...
heads: 12713
tails: 12836
警告提示:
以我的机器速度,我打赌你在本周结束前很久就会出现浮点错误.换句话说,您可以获得机器允许您存储为整数,双精度,浮点数或任何正在使用的值的最大值,然后您的代码将崩溃.
因此,您可能需要构建一些错误检查或翻转机制来保护您免受此攻击.
有关将要发生的事情的加速说明,请尝试以下操作:
x
while(is.finite(x)){
x
cat(x, "\n")
}
R优雅地处理浮点重载,并返回Inf.
因此,无论您在模拟中获得的数据现在都丢失了.无法将无穷大分析到任何合理的程度.
在设计模拟时请记住这一点.
这不是关于内存管理.这是关于计算机如何存储价值的.在任何程序员手册中阅读有关整数和浮点值的信息,例如http://en.wikipedia.org/wiki/Floating_point.在我的代码中,我只存储了两个值.这永远不会耗尽内存.但是你可能仍然会得到一个浮点错误(或者R的等价物.) (3认同)