如果说自己roll到了78点,而装备却进了B的包里,于是大家都以为B的运气好
但事实不是如此,我们看到的内容只能是
A掷出了78点
B掷出了78点
C掷出了78点
而实际情况是:
A掷出了78.45123
B掷出了78.49968
C掷出了77.83867
由于四舍五入,所以3人的点数显示均为78点,实际为B的ROLL点最高
(以上部分是简单的说,以下部分,如果嫌弃,可以不用看了。如果想了解原理的可以继续往下看)
经常看到论坛上有人抱怨
为什么我和他都roll 100点,东西却是他拿到的?
于是经常听到有人说,有时候打raid,yy里也会有人自以为是的总结,无外乎以下3点
1.对于roll了相同点数的人,系统随机分配给其中一人
2.对于roll了相同点数的人,系统给先点了需求的那个人
3.对于roll了相同点数的人,系统给后点了需求的那个人
其实事实并不是如此
1.事实上不存在2个能roll到相同点数的人
2.目前的随机函数命令都是伪随机数(不是说伪随机数就是人为控制,它只是尽可能的创造出随机性,尽管它依然是个伪随机数,不要纠结于这点,想详细了解的请自行百度)
3.对于roll到相同点数的人,其实他们实际的点数并不相同
接下来解释原因
随机数产生的范围是0~1
那为什么我们看到的是1-100呢?只要在随机数生成后乘以100,再四舍五入便行了
举例,LZ掷出了色子,于是系统内部运行命令RAND(),产生随机数字0.8345274
但是LZ在界面上看到的数字就是INT(0.8345274*100),即83点
不过INT取整函数存在多种,有向上、中、下取整,如果以上数字使用向上取整函数的话,那输出结果便是84了
(BLZ使用哪个函数我们就不得而知了,至少我不知道,咔咔)
说到这里,聪明的你应该明白为什么当2个人甚至3个人ROLL出84点时,系统能判定究竟是谁获得装备了吗?
比如A掷出了84点,系统内部随机数为0.8345274
比如B掷出了84点,系统内部随机数为0.8389531
比如C掷出了84点,系统内部随机数位0.8317664
即B>A>C,而不是我们从表面上看见的84=84=84
那么我们可以得知,实际是B掷点最高,所以物品由B获得
当然如果是这个情况,那么我们还可以得知BLZ使用的是向上取整法
然而实际情况我们并不知情,
唯一可以确定的是,我们的ROLL点并不是我们所看到的实际数字
同样的100点
可能A掷出的点数是1
而B掷出的点数是0.9999999999999999999
可惜,能拿到物品的是A
可能你会有个问题,如果两个人都ROLL到1了呢?
请放心,因为这实际上是一个伪随机数,所以不会存在2个相同的数
当然如果真的存在了,也会有方法可以避免他的存在,如小数点后不断增加直到出现不相同的数字为止
具体方法,由于LZ学术不精,恕不多加阐述了
所以以后若发现点数相同却没拿到物品的时候也不用叹息啦,惜败惜败,保持良好的心态才是最好的