找回密码
 点一下
查看: 1736|回复: 8

怎样模拟出比较真实的随机数

[复制链接]
发表于 2008-9-10 22:20:46 | 显示全部楼层 |阅读模式
好像WE中的随机数是伪随机数吧,不是十分清楚,请问有没有什么方法可以模拟出更真实的随机数?
希望知道的人告诉一下,谢谢~~
发表于 2008-9-10 22:28:38 | 显示全部楼层
计算机的随机数都是伪随机………………
回复

使用道具 举报

 楼主| 发表于 2008-9-10 22:30:08 | 显示全部楼层
。。。。。。。。。     多谢了~~
难道不能对WE的随机系统做进一步的处理吗
回复

使用道具 举报

发表于 2008-9-10 22:32:18 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2008-9-10 22:53:49 | 显示全部楼层
多谢~~~~如果影响不大的话,我还是不费那个心了~~~
回复

使用道具 举报

发表于 2008-9-10 22:58:19 | 显示全部楼层
WE中的随机数生成应该使用线性同余法吧,在ANSI C库文件里也是用这个算法的,这意味着你现在所用的程序软件大多数都是在用这个算法,包括WarcraftIII,不知你是否感到BM刀刀跳劈,DH每次必闪?

不过,严格来说它确实是不够“随机”的。这里的严格是多严格呢,比如说你要做一个足够安全的密码系统,这个算法就不够用了。就像一颗螺丝,对于航天飞船而言,它可能需要非常精密,但你见过用航天飞船的螺丝来造自行车吗?我相信LZ现在还是在造自行车阶段吧,当你有能力造航天飞船时,也不会来这个问题了。

如果LZ确实对随机数生成算法感兴趣,可以去看下openssl的随机数库,里面就有更好的随机数生成算法了。不过好像挺长的,比一个地图的代码还长.......
回复

使用道具 举报

 楼主| 发表于 2008-9-10 23:02:17 | 显示全部楼层
很感谢楼上的回复,很详细~~~~

对随机数方面确实不了解,唉,还是要学习啊~~~~~~~~
回复

使用道具 举报

发表于 2008-9-11 00:55:18 | 显示全部楼层
没办法了,  我也很想要简单的一两行代码让他更随机一点.  看来是不行.

印象中以前玩PHP的时候好象说是随机函数通常以计算机时间作为种子来计算得出的. 或者大概这个意思吧.
回复

使用道具 举报

发表于 2008-9-11 12:20:51 | 显示全部楼层
忘了说一点,伪随机数并不是说它得到的随机数不够均匀。

伪随机数是指它不是真的随机的,它总是确定的,如果时间可以倒退的话,你会发现同一个GetRandomInt肯定是得到相同的值。如果没有人的干预(比如电脑VS电脑),一局游戏的发展,只是由一个叫种子的东西确定,相同的种子就有一样的结果。如果能得到一个随机的种子不就能真正随机了吗,遗憾的是现在的电脑还无法做到这一点,这不是算法的问题,是硬件的问题。所以现在计算机里的随机数都不是真的随机,一切都是早已确定的。

一张地图能有这么多变化仅仅靠一个种子是不够的,但是别忘了人的行为也是随机的,伪随机数并没有想象中的可怕。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 22:55 , Processed in 0.108006 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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