作者y2468101216 (芸)
看板KanColle
标题Re: [求助] 主力队配法
时间Sun Oct 6 14:37:00 2013
稍微说一下,关於机率的问题
下面有人说取样是以毫秒来取的,我想这不太可能。
我本身也有在写程式,基本上以毫秒取是不太可能的。
举个例子:
一分钟掷骰子一次跟一秒钟掷骰子一次,哪个人会先手酸这不言而喻。
今天电脑的处理速度有限,用毫秒来取意味着负担会很大
如果是单机游戏还好,但如果是像舰娘这种就会挂掉。
而且flash是一种很肥大的程式语言
想想便可知24*60*60*100*人数是多麽大的数字,如果这样作 我看开放人数要先少
1/100才行。
一般而言,不管是哪个程式语言只要你没刻意去指定的话都是以时间为变数,
而为了减少负担,大部分都会以分或秒来改变机率一次,而且会用个变数确保
一分钟或一秒钟以内不会再取。
所以隔壁棚的P&D才会流行所谓的"垫子法"(XX分时升技会成功)
接下来要讨论机率的问题,究竟是先决定会造出战舰OR重巡
还是直接就决定会出哪艘,如果是前者那垫子法就会很有效,後者就算用垫子法也没差
听起来有点复杂,我举个例子:
根据巴哈的Q&A出战舰的机率是35%
第一种
丢骰子-重巡(65%)or战舰(35%)-丢骰子-决定舰娘
基本上如果是这样垫子法可以固定第一个变数,会一直出特定舰种但会出谁不知道
第二种
丢骰子-决定舰娘
出同只舰娘的机率很高,但我认为决定舰娘的变数不只一个,可能有好几个
这样即使固定了其中一个你也无法固定剩下的几个。
或许有人会说第一种决定舰种不会有两个以上的变数吗,我想大概是不会的
如前面所讲,程式设计师不喜欢增加程式的无谓负担,变数是用的越少越好。
再来我认为用第一种机率很高,一来程式码维护方便,二来搞活动也方便,
再来,游戏出现的舰种会根据配方不同而出现不同的结果,用第一个会比第二个来的好写
(我个人认为拉)
懒人包:
如果你想造BB或CV,我建议以分钟为单位造,没出就等下一分钟,有出就连续造
再出的机率会很高。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.12.134
1F:→ ChiKK:你的手酸理论,除非是资源无限且不吃网速才会成立吧 10/06 14:45
2F:→ ChiKK:而且用分秒都是人去定义的,对电脑来说都是一次动作不是? 10/06 14:46
3F:→ ChiKK:而且前端用flash呈现,好像跟後台用什麽写没关联… 10/06 14:48
可能我不是讲得很清楚,当同时有很多人按下建造,这时如果再取变数,伺服器的
负担会很大,我们都怕下雨时水淹过堤防,处理量太大,伺服器会不稳
4F:推 attacksoil:不是很懂怎麽得到懒人包结论的耶 10/06 14:48
5F:→ attacksoil:如果真的是以分钟分钟单位掷骰子 那不是应该该分钟内 10/06 14:49
6F:→ attacksoil:全部都是相同舰种? 可是显然不是啊 10/06 14:49
理论是很高机率,我内文有提到,因为可能多掺了几个变数谁也不知道。
7F:→ Kenqr:乱数种子通常是取电脑的时间 电脑的时间是精确到毫秒的 10/06 14:56
8F:→ Kenqr:另外乱数种子并不需要每次取乱数都重新产生一次 10/06 14:56
每次建造都A=MATH.RANDOM()想必伺服器会爆炸的,另外我否定的是
每次取变数间隔的时间,不是电脑可以精准到哪里。
※ 编辑: y2468101216 来自: 220.135.12.134 (10/06 15:11)
9F:推 seedpk5079:推Kenqr 10/06 15:07
10F:推 BoXeX:一般来说取乱数是以秒为单位没错啦 10/06 15:11
11F:→ BoXeX:但如K大说的,种子根本不用每次重取....... 10/06 15:11
12F:推 attacksoil:我的意思就是参了几个变数不知道 所以(ry 10/06 15:13
13F:→ BoXeX:取乱数不过是去乱数表挖下一个值而已.... 10/06 15:14
14F:→ BoXeX:而且如果人数很多,我还可以根本不用乱数 10/06 15:18
15F:→ BoXeX:1~10000下去每个人轮,然後每次抽就依材料找一下对应... 10/06 15:19
16F:→ BoXeX:方法实在太多了,而这篇文的前提要成立的机率也不是很高 10/06 15:20
17F:推 aresa:东西都在玩家电脑算的吧,怎麽可能丢回伺服器算WWW 10/06 15:20
18F:→ BoXeX:抽选机率的东西给伺服器算这点倒是很正常啦... 10/06 15:21
19F:→ aresa:当然是HASH一下送回去验证,没那麽难吧@@ 10/06 15:21
20F:→ aresa:我自己写的server就没这麽搞毛,不然封包加密是加爽der 10/06 15:22
21F:→ BoXeX:虽然我是觉得机会不大,但也不能否认你的说法 10/06 15:23
22F:→ BoXeX:反正就是可能性太多,各种说法成立的机率都太低 10/06 15:24
23F:→ BoXeX:一切看程式设计师爽怎麽写,不是拿自己习惯下去说就高机率对 10/06 15:25
24F:推 onionandy:给aresa 你按建造或开发时系统会卡一下 这时就回传了 10/06 15:29
25F:→ onionandy:客户端是拉结果 因为这东西在客户端算会出事的 10/06 15:30
26F:→ jerry78424:舰kore封包有加密?那怎麽会有46cm连装炮酱.... 10/06 15:32
27F:→ kaseno:那个是伺服器端没作二次验证的关系吧 也有开场舰娘岛风啊 10/06 15:33
28F:→ Kenqr:假如隔一分钟才取一次乱数 那我在一分钟内一直用同样的配方 10/06 15:33
29F:→ Kenqr:就一定会造出同样的船 可是实际上并非如此 10/06 15:33
30F:推 aresa:看来我犯了拿自己的东西套到别人的东西的错了XD 10/06 15:34
31F:推 noir:抽选机率如果是玩家端在计算 你会看到一堆人100%命中46炮 10/06 15:37
32F:推 Kenqr:战斗伤害之类的 计算量很大 有可能偷懒直接在玩家端算 10/06 15:38
33F:→ Kenqr:造舰或开放之类的就不太可能在玩家端算了 10/06 15:38
34F:→ Kenqr: 发 10/06 15:39
35F:→ attacksoil:电脑网路lag的时候 造舰or捡到舰娘时会lag很明显 10/06 15:41
36F:推 dderfken:改成取变数区间 後在骰子取区间中变数如何? 10/06 15:58
37F:→ litcurler:以时间(日.时.分.秒.)为基准的变数? 10/06 16:29
38F:推 onionandy:对电脑来说 时间大概都是拿timestamp来算 10/06 16:52
睡一觉起来後看大家的讨论得很有深度,钓鱼大成功(拖走
学到了不少东西,感谢各位XD
※ 编辑: y2468101216 来自: 220.135.12.134 (10/06 17:55)