24小时热门版块排行榜    

查看: 1184  |  回复: 4

wolffporter

新虫 (初入文坛)

[求助] matlab做Monte Carlo 如何多次产生 均匀 且 低重复 的随机数?

用 Matlab 模拟聚合反应,有一些反应的概率比其他反应低4个数量级。Matlab自带的 rand、randi、unidrnd 等伪随机数函数以及 拟随机数列 haltonset、sobolset等都无法满足均匀且低重复性的要求,导致分子量分布曲线在高分子量尾部带有一个极高点。不知道大家有没有建议可以解决这个问题?谢谢。
PS:这是短反应时间时的情况,反应时间足够长之后,这个异常便消失。见附图,左上图为段时间;右边两幅为长时间的结果(纵坐标的表示方法不一致而已),其中右上图的纵坐标为对数坐标(与左上图一致),右下图为普通线性坐标。

matlab做Monte Carlo 如何多次产生 均匀 且 低重复 的随机数?
无标题.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manutdhk

木虫 (小有名气)

看不懂你的图。但产生高接收率的随机数是有办法的。一般采用反正切函数导数的形式来逼近你需要抽样的随机数分布。

发自小木虫IOS客户端
2楼2016-03-11 21:11:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wolffporter

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by manutdhk at 2016-03-11 21:11:15
看不懂你的图。但产生高接收率的随机数是有办法的。一般采用反正切函数导数的形式来逼近你需要抽样的随机数分布。

我需要平均分布(uniformly distributed)的随机数来抽样反应类型,附图是聚合物的分子量分布曲线,横坐标是分子量的对数,曲线面积正比于聚合物总质量。
3楼2016-03-11 21:17:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manutdhk

木虫 (小有名气)

引用回帖:
3楼: Originally posted by wolffporter at 2016-03-11 21:17:34
我需要平均分布(uniformly distributed)的随机数来抽样反应类型,附图是聚合物的分子量分布曲线,横坐标是分子量的对数,曲线面积正比于聚合物总质量。...

均匀分布是最理想的啊,怎么会出现低接受率的情况呢?

发自小木虫IOS客户端
4楼2016-03-11 21:20:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wolffporter

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by manutdhk at 2016-03-11 21:20:43
均匀分布是最理想的啊,怎么会出现低接受率的情况呢?
...

不是低接受率的问题,觉得主要还是分布不够均匀的问题,一些增长链没有分配到低概率的反应,而另一些过度得到。如果将随机数对其序号(也就是增长链标号)作图,很明显有空洞,而且这种空洞很难被重复产生的新随机数组覆盖掉,也就意味着这些空洞对应的增长链很难遍历所有类型的反应。
5楼2016-03-12 00:36:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wolffporter 的主题更新
信息提示
请填处理意见