Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你们这些用 Math.random 的人...要不要禁用 Math.random? #15

Closed
luin opened this issue Nov 30, 2014 · 6 comments
Closed

你们这些用 Math.random 的人...要不要禁用 Math.random? #15

luin opened this issue Nov 30, 2014 · 6 comments
Labels

Comments

@luin
Copy link
Owner

luin commented Nov 30, 2014

你们能想象到大半夜的我刚改完解析引擎,用我的代码随便挑了个人对战,前两次正常,第三次竟然发现结果不一样了。于是忐忑地换了个人,结果也是两轮结果完全不一样。我当时就吓坏了好么。。。结果发现随便挑的两个人都用了 Math.random。

我觉得用 Math.random 对于 AI 来说意义不是很明显,而且每次结果是不确定的,不知道对比赛来说是不是件好事。大家可以讨论一下

@luin luin added the 讨论 label Nov 30, 2014
@senzi
Copy link

senzi commented Nov 30, 2014

AI不需要随机性

仅仅从游戏性来说,AI是不太需要这种随机性的东西。禁用Math.random之后胜负就能确定。(输的心服口服)
在有高级一点算法的辅助下是可以不需要这个函数的

去掉也挺纠结

这是因为不是每个人都能考虑每种情况去执行命令。在前期需要Math.random让代码能跑起来。
而且完全脱离Math.random可能需要自己写比较高级的函数辅助。

可以先不禁止Math.random,但是给大家说明一下
(有可能的话,在编辑器中出现Math.random就提醒)
可以给一周的延缓期,并且声明一周后使用Math.random会造成代码出错

@SakuraSa
Copy link

如果是为了包整结果的为一性,我觉得可以将Math.random的随机数种子设值为和账号相关的值(例如用户明,用户id)
这样的话,每个人就都会用有一个独特而又固定的随机序列
这样大家既可以用Math.random,又可以让对站结果固定

@chairuosen
Copy link

有些地方确实要random。比如没有星星,没有敌方,前方有石头,这时候往左拐还是右呢?

@liutianyu
Copy link

实例文档给的就是用的random,http://codegame.org/doc/api 。所以用的人多。

@luin
Copy link
Owner Author

luin commented Dec 1, 2014

把方案调整为 @SakuraSa 说的那样,以代码的 md5 为随机种子如何。这样对同一份代码来说 Math.random 返回的值依然是完全随机的,不过重复运行代码时生成的随机数是相同的。

@senzi
Copy link

senzi commented Dec 1, 2014

@luin 同意!就这么改吧,只要Math.random的结果是固定的就挺好的。

@luin luin closed this as completed Dec 2, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants