设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1740|回复: 5
打印 上一主题 下一主题

[有事请教] 求根据幸运值抽到好东西的概率越高的算法

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1366
在线时间
177 小时
注册时间
2017-6-28
帖子
48
跳转到指定楼层
1
发表于 2022-6-27 15:49:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
目前有7个稀有度,1星为最低,7星为最高,
例如玩家初始幸运值1,
抽到1星的概率85%,
抽到2星的概率10%,
抽到3星的概率5%,
抽到4星的概率0%,
5星0%,
6星0%,
7星0%,
随着玩家的幸运值提升,后面0%的东西会有机率抽到,而低星的概率会逐渐降低,
而玩家的幸运值不设上限,玩家幸运值提高后,抽到低星的概率也至少保有1%机率出现,
求个算法,有大佬指教一下?

Lv4.逐梦者

梦石
0
星屑
6211
在线时间
604 小时
注册时间
2017-9-27
帖子
251
2
发表于 2022-6-27 16:54:41 | 只看该作者
本帖最后由 天浩 于 2022-6-27 17:21 编辑

判定值 = 0~~99, 幸运 = 1;
最终判定值 = 幸运~~111-幸运/7(此值为最大的那个判定值);
如果判定值<86-幸运,获得1星;跳至结束;
如果判定值>=86-幸运&&<96-幸运/2,获得2星;跳至结束
如果判定值>=96-幸运/2&&<101-幸运/3,获得3星;跳至结束
如果判定值>=101-幸运/3&&<105-幸运/4,获得4星;跳至结束
如果判定值>=105-幸运/4&&<108-幸运/5,获得5星;跳至结束
如果判定值>=108-幸运/5&&<110-幸运/6,获得6星;跳至结束
如果判定值>=110-幸运/6&&<111-幸运/7,获得7星;跳至结束

标签:结束;

所以最终可得出~~~~
如果幸运为10,判定值最终为则为 10~109.6;
如果判定值<76,获得1星;跳至结束;
如果判定值>=76&&<91,获得2星;跳至结束
如果判定值>=91&&<97.7,获得3星;跳至结束
如果判定值>=97.7&&<102.5,获得4星;跳至结束
如果判定值>=102.5&&<106,获得5星;跳至结束
如果判定值>=106&&<108.6,获得6星;跳至结束
如果判定值>=108.6&&<109.6,获得7星;跳至结束
标签:结束;

如果幸运为20,判定值则为 20~108.2;
如果判定值<66,获得1星;跳至结束;
如果判定值>=66&&<86,获得2星;跳至结束
如果判定值>=86&&<94.4,获得3星;跳至结束
如果判定值>=94.4&&<100,获得4星;跳至结束
如果判定值>=100&&<104,获得5星;跳至结束
如果判定值>=104&&<106.7,获得6星;跳至结束
如果判定值>=106.7&&<108.2,获得7星;跳至结束
标签:结束;
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
帖子
821
3
发表于 2022-6-27 18:17:27 | 只看该作者
楼主是要数学公式,还是要代码啊?
如果要数学公式的话,上面最好是要用权重,不要用概率
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1366
在线时间
177 小时
注册时间
2017-6-28
帖子
48
4
 楼主| 发表于 2022-6-27 18:50:36 | 只看该作者
天浩 发表于 2022-6-27 16:54
判定值 = 0~~99, 幸运 = 1;
最终判定值 = 幸运~~111-幸运/7(此值为最大的那个判定值);
如果判定值=86- ...

这个111是什么?当幸运/7大于111时为负数,由于幸运不设上限所以没有最大值,似乎行不通
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1366
在线时间
177 小时
注册时间
2017-6-28
帖子
48
5
 楼主| 发表于 2022-6-27 18:52:28 | 只看该作者
RyanYe 发表于 2022-6-27 18:17
楼主是要数学公式,还是要代码啊?
如果要数学公式的话,上面最好是要用权重,不要用概率 ...

数学公式或是代码都可以,主要是数学白痴,想不到思路出来,权重听说比较好?但我不懂耶,大佬指教一下
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
帖子
821
6
发表于 2022-6-27 23:49:00 | 只看该作者
本帖最后由 RyanYe 于 2022-6-27 23:50 编辑
loveings 发表于 2022-6-27 18:52
数学公式或是代码都可以,主要是数学白痴,想不到思路出来,权重听说比较好?但我不懂耶,大佬指教一下 ...


指教不敢当,我把我用的权重函数发出来,你看对你是否有帮助:

函数定义:
JAVASCRIPT 代码复制
  1. function weightRandom(randomConfig) {
  2.         //var randomConfig = [{id:11,w:3},{id:12,w:1}];
  3.         //SpawnEventID, Weight
  4.         var randomList = [];
  5.         for (var i in randomConfig) {
  6.                 for (var j = 0; j < randomConfig[i].w; j++) {
  7.                         randomList.push(randomConfig[i].id);
  8.                         //The list above is supposed to be like [11,11,11,12]
  9.                         //So for the god's sake the value of w cannot be too large
  10.                 }
  11.         }
  12.         var randomValue = randomList[Math.floor(Math.random() * randomList.length)];
  13.         return randomValue;
  14. };


脚本代码函数引用:
var Gid=weightRandom([{id:34,w:2},{id:38,w:1}]);//基础药水
var x=$gameMap._events[this._eventId]._x;
var y=$gameMap._events[this._eventId]._y;
Galv.SPAWN.event(Gid,x,y);

以上代码的意思是:
2/3的概率召唤一个34号事件,1/3概率召唤一个38号事件
用的是权重2和1,而不是概率百分之多少
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-18 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表