【发布时间】:2017-01-08 03:19:18
【问题描述】:
有什么方法可以生成精度较低的伪随机数,从而加快处理速度?
另一件事是,我知道如果一次生成所有随机数(例如rand(100,1000))而不是一个一个生成,它可以节省时间。有人可以解释为什么这是真的吗?
【问题讨论】:
-
根据the documentation,您可以将输出指定为
'single'精度。如果没有更多关于你到底在做什么的背景,很难回答“为什么这么慢”的问题 -
我认为将输出指定为“单个”只会改变输出本身。因此,这些数字的计算精度与以前相同,并且在之后四舍五入,这对速度没有帮助。没有与此相关的特定程序,如果可能的话,我只是感兴趣。
-
必须有 some 程序会产生这个问题。在我的机器上生成 900 万个随机数需要
0.047秒。这并不慢。 -
为什么几乎可以肯定是因为Matlab是一个解释器,它在解释器阶段解析语句之后调用编译的库模块。对带有 args 的已编译库模块的一次调用以在内部进行 1000 次计算将比 1000 次解释器解析/调用以每次调用执行一项操作要快。
-
@excaza 是的,我同意它并不慢,但我感兴趣的是,理论上,是否有可能以较低的精度生成它们,或者它是否由生成算法,它们被计算到一定的精度。
标签: performance matlab random vectorization precision