赞 | 6 |
VIP | 22 |
好人卡 | 15 |
积分 | 13 |
经验 | 97563 |
最后登录 | 2022-11-26 |
在线时间 | 831 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1323
- 在线时间
- 831 小时
- 注册时间
- 2007-12-25
- 帖子
- 1558
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
二话不说,上图
这个图什么意思呢
RM默认的rand函数对随机范围内的所有结果概率都相同,因为某项研究,不得不写出来这个函数。
刚写出来就拿出来分享了。- #=========================================
- # 功能扩展
- # 随时使用 srand(num,s)获得一个倾向随机数
- #=========================================
- class Object
- #=======================================
- # srand 不均衡随机数
- # s: 倾向程度 若为正值则概率倾向于低值,反之。若为0则为均等随机数
- #
- # v: 范围,0...v的一个整数
- #=======================================
- def srand(v,s=0)
- return rand(v) if s==0 #如果倾斜为0则返回均衡随机数
- if s > 0
- s=1.0/s #得到s的倒数
- min = 1/(s+1) #得到范围最小值
- max = 1/s #得到范围最大值
- temp = min + rand((max-min)*s*v*v)/s/v/v
- n = 1/temp-s
- n = (n-1)*v
- return n.to_i
- else
- s=-1.0/s #得到s的倒数
- min = 1/(s+1) #得到范围最小值
- max = 1/s #得到范围最大值
- temp = min + rand((max-min)*s*v*v)/s/v/v
- n = 1/temp-s
- n = n-(n-1)*v-1
- return n.to_i
- end
-
- end
-
- end
- #==========以下内容测试完毕请删除================
- sou = []
- for i in 0..49
- sou[i]=0
- end
- for i in 0..9999
- n = srand(50,10) #★★★★★更改此处的 10 可以看到效果
- sou[n] += 1
- end
- pic=[]
- for i in 0..49
- p = Sprite.new
- p.bitmap = Bitmap.new(4,sou[i]/10+5)
- p.bitmap.fill_rect(1,1,8,sou[i]/10-2,Color.new(255,255,255,255))
- p.x=100+i*4
- pic.push p
- end
- loop do
- Graphics.freeze
- end
复制代码 用法 脚本插入脚本编辑器任意位置(好歹懂一点插脚本的方法)
在任意地方可以用 srand(num,s)获得一个倾向随机数
这里的num为范围,例如30,则会获得一个0..29的随机数,s为倾向度,当s值越大,结果越切近0,反之则越贴近最大值,S可以是负数或0.
可以用到幸运上吧。当幸运值高以后,获得高伤害可能性更大用这个函数很棒的。 |
|