原神抽卡模拟器V1.2上线

首页 / 原神日常 / 正文

时隔65天,我的原神抽卡模拟器又回来啦,虽然经历了很多波折,但终究是开发完了,这个模拟器也是在不断的学习中完善的,从最初的小程序到网站,那真的是一言难尽,不出意外的话这个模拟器1.X不会再有新版本了,会不会有2.X版本浅浅期待一下吧~

抽卡模拟器V1.2体验地址

至于为什么这个不叫胡桃小站,那当然是因为我觉得胡桃小站应该是一个全新的导航界面,而不是只有一个功能的界面,所以暂时把这个程序归属到HONG的小站了,单独功能的分页面,路径里的HT只是在做之前有那个想法罢了。

初代模拟器

这个想法起源于2022年7月22日,灵感来源于游创工坊的小程序,在此特别致谢,第一代版本在7月28日正式开发完毕,并上线体验了,概率或许有些不够准确,而且对程序负担可能也大,但确确实实是能够实现保底机制的递增了。

当然算法略显臃肿,73抽开始逐渐递增6的概率,基本思路是先从0-999中抽取一位作为金色数字,然后再循环6次抽取0-999的数,如果这6次其中一次出现了之前定义的金色数字,则代表出金,但这样就有一个问题,那就是到73抽之后开始,如果都没出金,那么程序就会每抽递增多60次循环去生成0-999的数字再去比较,直到89抽直接相等。

0.png

模拟器V1.1 进阶算法

上面的算法是不是听着很离奇,单抽就要循环那么多次去算,那十连抽得是多浪费资源啊,所以第二代概率算法横空出世,当然这个算法不是自己想出来的,在此也得特别致谢博客园的一位作者“破壳而出的蝌蚪”提出的自定义概率算法。

由于小程序被封,一时间没办法平复心情,所以这个模拟器是停更了一段时间,直到9月份,用网站搭建一个模拟器的想法就萌生了,由于网站已备案,所以能够很稳定的支撑着这个小破站的运行,程序不涉及盈利,仅供学习参考,这还给封就说不过去了。

1.jpg

上面的就是第一代网站的模拟器,因为和小程序是联动的,所以版本跟随了,属于1.1版本,相比于小程序,外观那真的是直接大换血了,但内部实际还是差不多的,除了算法变动和支持切换卡池了之外,但这个算法在这个版本还是没搞懂是如何做的自定义概率的,直到1.2版本,终于明白了是怎么一回事了。

面向对象 1.X系列完结

因为网站刚上线的第一个版本还不是很完善,比如没有武器池,没办法保存保底机制等等,再加上这界面越看越丑,还有面向过程的做法实属不好维护,于是我决定采用面向对象的形式重构这个程序!!

2.jpg

本来是想在卡池两边的加上渐入动画的,由于时间太赶了(我想趁国庆节第一天肝完然后好好休息会),然后没留意,就草草上线了,但总体来说还是很完整的,实现了角色与武器池的四卡池切换,还支持切换历届的卡池信息抽卡,当然目前只有两个版本,懒得搞其他版本的数据了,后续会补齐,武器池的机制其实也没想象那么难。

3.jpg

你要说不舒服的地方那还是有的,比如这个本地存储的数据就让人很不舒服,虽然能够每次都定位到上一次的抽卡界面,而且抽卡数据也能保留,但你试着切换一下历届卡池,就会发现问题。

总的来说1.X能做成这样我也觉得可以了,此版本代码不开源,因为还有很多东西未完善,把希望寄托在2.X系列吧,最近我也是想好好休息一下了,国庆回去就得学Vue那些了,所以这东西就只能暂时不维护了,短暂的停泊是为了更好的远航嘛~

最后

来说说那个算法,因为我不想自己的代码自己都不理解,就算是百度的知识我也想去搞懂,所以今天就花了点时间去理解,在不断的调试过程中,我终于理解了,只想感叹一句牛哇,写出这个程序的人脑洞是得有多大啊。

基本思路:把Math.random()生成的数看着百分比,然后定义每个整数值取值范围,传入最大值和最小值,还有自定义概率的值,把每一个取值都当成概率,下面放上核心代码帮助理解。

<script>
  let t = 0, r = Math.random();
  for (let i = this.min; i < this.max; i++) {
      this.custom.has(i) ? t += this.custom.get(i) : t += this.percent;
      if (t > r) return i;
  }
</script>

custom是传入的map对象,has是在map中寻找有没有这个值,返回的是布尔类型,get方法返回对应的值,percent表示是剩余百分比,拿模拟器举个例子,我需要随机获取3,4,5这几个数,4占0.051,5占0.006,那么percent就是3的概率0.943,然后再利用t去和r比较,如果t大就返回该百分比对应的数,这样,最多只需要循环3次即可,当然这也只是表面,内部的原理或许还有待挖掘。

最后的最后,理解完这段代码是真的让我对算法好奇心更重了,那些大佬是怎么想到这些解决思路的,不得不承认我离他们还有好大一段距离,但我不会停下的,直到我也成为大佬为止,在此刻,诞生了一个全新的梦想,那就是,技术宅改变世界~

评论区
头像
    头像
    明月清风
    2022年10月18日 09:31
    回复

    要是模拟器的好运气能带到游戏里面就好了X2

      头像
      DianC
      2022年10月18日 12:49
      回复

      不会吧,我这模拟器明明设置了都是70多抽出货才对昂哈哈

    头像
    timochan
    2022年10月6日 19:30
    回复

    要是模拟器的好运气能带到游戏里面就好了

      头像
      DianC
      2022年10月6日 20:41
      回复

      我模拟器都是非酋◑﹏◐

        头像
        timochan
        2022年10月7日 12:29
        回复

        那就去刷圣遗物!