计算机模拟投掷硬币,模拟投掷硬币一周?

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认同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值