随机数:修订间差异

无编辑摘要
无编辑摘要
标签移动版编辑 移动版网页编辑
无编辑摘要
标签移动版编辑 移动版网页编辑
 
(未显示同一用户的6个中间版本)
第22行: 第22行:
a((int)min*1000,(int)max*1000,RandomIndex+unit.bE)*0.001f
a((int)min*1000,(int)max*1000,RandomIndex+unit.bE)*0.001f


你可以通过发射抛射体影响bE的值来改变引索,不过这对于多个单位作用不大。
你可以通过发射抛射体影响bE的值来改变引索,不过它的作用不大。


这是反编译代码。
这是反编译代码。
第72行: 第72行:
这里可以使用self.id作为偏移。
这里可以使用self.id作为偏移。


rnd(self.id*0.001,1/0)%mod+min
rnd(self.id*0.001,mod)+min
 
这是最小精度选择,选择这个不是最好的,若要使分布更加均匀请增加倍率,比如选择1000:rnd(self.id,mod)。


运算优先级存在bug,应该尽可能加上括号避免运算错误。
运算优先级存在bug,应该尽可能加上括号避免运算错误。
第82行: 第84行:
生成区间0~2147483
生成区间0~2147483


这个随机生成器的有效范围是16777215,考虑到游戏滥用id,id可能超出有效范围。
当多次行动生成时,对于多个单位,你需要格外的引索,这很容易造成冲突,建议使用rnd组件。
 
这时应该使用[https://cra.lanzouj.com/b0agtlmih rnd组件]  下载密码:00


如果你需要准确的小数,生成区间在-16777.217~16777.216内保证精度,这里舍弃负数。
如果你需要准确的小数位,请限制区间在-16777.217~16777.216,避免float精度损失。


rnd(self.id*0.001,16777.216)%mod+min


不过该生成式的随机分配不均,导致有效范围更小。
这个随机生成器的有效范围是16777215,考虑到游戏滥用id,id可能超出有效范围。
这时应该使用[https://cra.lanzouj.com/b0agtlmih rnd组件]  下载密码:00
292

个编辑