→ meowyih: 说真的, 程式摊开来九成九就一行 if rand()%100 > 99 06/01 20:53
→ meowyih: { 喔耶出运啦! } 玩家看了也不会觉得公平的 :> 06/01 20:53
其实大部分都不是,因为rand()出来的东西是伪随机,理论上直接这样写会出问题。
至少我知道的专案都是用乱数表加上种子来处理,尽量让结果接近真随机。
(我文组也不是写程式的,这方面的东西有老大要解释的麻烦帮个忙www)
然后这个种子通常是用时间来抓,
简单来讲就是某些手游有同时间抽卡会有相同结果的都市传说,这是有可能的。
这样看起来好像就是所谓的欧洲时间?
但其实时间的种子通常会以秒以下来抓,真的有欧洲时间那也可能只是毫秒等级的时间。
当然,乱数是有可能被破解的。
比较有名的例子就以前的PM。
用破解乱数运作、调整时间的方式抓自己理想体质的PM曾盛极一时。
但是前阵子GF调整之后破解PM乱数变成几乎不可能的任务,所以乱数世代也随之终结。
这部分我也问过程式,他们几乎都是说要破解刻意加强设计的乱数是几乎不可能的事。
所以还是多做好事,扶老婆婆过马路最实在,起码有帮助到别人 ==
然后卡池的内容也不会写在程式码里,因为那是我们这些杂工企划要处理的东西。
基本上大部分的游戏资料都是用表格在管理,卡池内容也一样。
卡池其实不是让你直接抽到商品。
而是先抽塞满相同机率的商品的箱子,再从箱子中抽取商品这样。
(避免一张搞到又臭又长,debug的时候看到san值归零)
只是我高中的时候就把数学课本完全丢掉了,
不太确定这样设计会不会影响到抽取的期望值计算www