NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16484|回复: 13
打印 上一主题 下一主题

[工作记录] 关于随机算法的问题

[复制链接]
跳转到指定楼层
1m
发表于 2010-11-22 16:15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
public class rnd{ int S; int A=13; int M; int C=3; public rnd(int n){M=N*4;S=1;} public float next(){ S=(S*A+C)%M; //println(M); return (float)S/M; } } } 这是所谓的乘同余法 但是效果很不好 很快就开始循环了 求高手指点 这是失败的效果
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2010-11-22 21:26:14 | 只看该作者
潘皓都不懂,群里还有谁能懂呢?
3m
发表于 2010-11-23 02:10:57 | 只看该作者
Orz一直在用原始试错法写程序路过。。。
4m
发表于 2010-11-23 13:59:08 | 只看该作者
我看不懂!介绍一下吧!
5m
发表于 2010-11-23 15:28:01 | 只看该作者
这种不叫“循环”,这是他的pattern, 伪随机数的图案都是十分有规律的,都是在平行的线上(像你这个)或着点都在平行的面上,所以都叫 deterministic random number. 你这种是Linear Congruential Generator,最大的周期是M(会有少于M的周期),M越大周期越长。 LCG对 a,c,M的选择十分敏感,选得不好可以很废物,一般M是二的次方,常用的是2的32次方或64次方 。 详情可搜索Linear Congruential Generator,可找到各常用编译器设定的LCG参数
6m
发表于 2010-11-23 18:16:47 | 只看该作者
这个真的得慢慢学学
7m
发表于 2010-11-23 18:44:55 | 只看该作者
慢慢来。。。
8m
 楼主| 发表于 2010-11-23 22:59:49 | 只看该作者
5# holonking 太感谢了 我还以为书上的公式是瞎忽悠呢
9m
发表于 2010-11-24 00:10:00 | 只看该作者
http://en.wikipedia.org/wiki/Linear_congruential_generator 我按照这里提供的参数构造了一下 QQ截图未命名.jpg (32.25 KB, 下载次数: 0)
10m
发表于 2010-11-24 04:32:44 | 只看该作者
学学!学习了!
11m
 楼主| 发表于 2010-11-26 00:00:47 | 只看该作者
9# claudemit 这是正常现象 你注意换A和C的值就行 一般是通过电脑上的时间算得
12m
发表于 2010-12-15 10:12:29 | 只看该作者
很简单的算法!却有如此效果!
13m
发表于 2011-7-3 08:48:13 | 只看该作者
呵呵,这个有点意思,5楼讲解很清楚。
14m
发表于 2011-9-8 02:58:52 | 只看该作者
必高升国际有限公司,只做原装正品

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-24 03:33 , Processed in 0.066704 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表