免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: A.com
打印 上一主题 下一主题

我也来求一个等概率随机数算法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-03-23 21:44 |只看该作者
没道理啊,只是让
0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999
这个数列做个shuffle,这个算法没问题吧?
用得啥语言?

论坛徽章:
0
12 [报告]
发表于 2010-03-23 21:46 |只看该作者
楼主你可以用线性同余法来自己写随机数生成函数,应该就可以了。
线性同余法很好实现的.

论坛徽章:
0
13 [报告]
发表于 2010-03-23 21:47 |只看该作者
明白了,你是每次都用时间做种子生成的的吧,那不行的。
啥语言?

论坛徽章:
0
14 [报告]
发表于 2010-03-23 21:49 |只看该作者
记得以前做过洗牌,发牌的程序.用CPU启动后的时钟周期数做种子,随机性还马马虎虎

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
15 [报告]
发表于 2010-03-23 21:51 |只看该作者
一种叫做lua的脚本语言

论坛徽章:
0
16 [报告]
发表于 2010-03-23 21:52 |只看该作者
如果这个语言的随机函数是
int rand(seed)这种格式的话,
楼主你每次喂给它的seed要用上次生成的随机数,而不是总是当前时间。

论坛徽章:
0
17 [报告]
发表于 2010-03-23 21:54 |只看该作者
lua的话。
只要一开始调用math.randomseed( os.time() )
然后就不停的调math.random()就可以了啊

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
18 [报告]
发表于 2010-03-23 21:55 |只看该作者
明白了,你是每次都用时间做种子生成的的吧,那不行的。
啥语言?
专操五毛 发表于 2010-03-23 21:47



    我写不了复杂的算法。。。不是用时间做种子,用的是事先生成的10个随机的大素数序列做种子。。。后来把这个序列增加到30个素数,终于覆盖了0-9的每一个数字,但其分布还是惨不忍睹

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
19 [报告]
发表于 2010-03-23 21:57 |只看该作者
lua的话。
只要一开始调用math.randomseed( os.time() )
然后就不停的调math.random()就可以了啊
专操五毛 发表于 2010-03-23 21:54



    完全不行呀,同一秒的输出都是一样的,根本不随机

论坛徽章:
0
20 [报告]
发表于 2010-03-23 21:58 |只看该作者
怀疑你在循环体内不停的调用math.randomseed( os.time() ),不晓得有没有猜错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP