命令方块吧 关注:6,198贴子:69,200

[随机模块]一个借助战利品表生成随机数的模块

只看楼主收藏回复

今天写战利品表的时候偶然想到的一个东西
在部分功能里,我们需要用到随机数,但是如何生成随机数是一个很头疼的问题。当然,CBL团队已经用函数做出来了一个生成随机数的函数。这里我提供另一个思路。
先上图






IP属地:安徽1楼2019-03-31 12:44回复
    2L放链接


    IP属地:安徽2楼2019-03-31 12:44
    回复
      2026-02-19 12:25:36
      广告
      不感兴趣
      开通SVIP免广告
      介绍:这个模块目前可以生成0~249之间的随机数(我目前已经有扩大随机数范围的想法了,过几天后会发改进版的)
      原理:借助战利品表,生成一个随机损坏值的铁剑,然后获取铁剑的耐久值作为随机数。因为铁剑的耐久只有250点,因此生成的随机数范围只有0~249
      使用:首先下载并解压模块,然后把解压到的文件放进存档里的datapacks文件夹,进入游戏。
      进入游戏后输入/function ran:start 建立计分板,然后获取命令方块,在命令方块里输入function ran:random 并激活一次,从第二次以后就可以正常使用该模块了
      模块所使用的计分板id是ran,最终的分数会保存至最近的玩家身上
      该模块会在后续过程中做出更多修改。


      IP属地:安徽3楼2019-03-31 14:07
      收起回复
        随便生成一个as,获取uuid并转化成十进制可不可以


        IP属地:美国来自Android客户端4楼2019-03-31 20:29
        收起回复
          用loottable甚至可以精确控制每个数的概率


          IP属地:浙江来自Android客户端5楼2019-03-31 21:56
          收起回复
            记得mcbbs上面也有一个随机数生成的。。。2b做的,可以给楼主做参考?【个人尝试过2b的方法实用性有一点差】


            IP属地:广西来自Android客户端6楼2019-04-01 21:30
            收起回复
              有一个想法
              用不同的附魔类型的等级代表不同的数位
              比如耐久是个位数,锋利是十位数,等级从0-9,然后提取附魔等级到记分板即可。
              进一步,可以通过lt的条件控制生成的范围,比如0-9(只提取个位数),0-19。。。
              然后有需要的话可以再用一个附魔代表正负,比如饵钓0-1,0是负数1是正数之类的
              好吧ヽ(  ̄д ̄;)ノ其实我是想让你搞一个可控好用的随机值生成模块方便我做东西(大雾
              我的原计划是生成10个as然后random一个数位一个数位的穷举上去,看到你这个贴才想到用lt的附魔代表数位
              2333


              IP属地:贵州来自Android客户端7楼2019-04-01 23:33
              收起回复
                怎么精了,这东西我还准备再改进一下呢


                IP属地:安徽来自Android客户端9楼2019-04-04 15:19
                回复
                  2026-02-19 12:19:36
                  广告
                  不感兴趣
                  开通SVIP免广告
                  我之前也用LootTable来生成随机数,不过用的是穷举法


                  10楼2019-04-04 19:37
                  回复
                    0.2版本介绍
                    现在可以指定随机数产生的数值范围
                    可以将结果保存至任意实体身上
                    使用:首先下载并解压模块,然后把解压到的文件放进存档里的datapacks文件夹,进入游戏。
                    进入游戏后输入/function ran:start 建立必要的计分板。然后编辑目标实体的ran_min和ran_max分数,以此确定随机数范围,然后/execute as <目标实体> at @s run function ran:random即可生成随机数,最终的随机数会保存至指定实体的ran分数上


                    IP属地:安徽来自Android客户端13楼2019-04-05 10:59
                    收起回复
                      刚刚发现一个bug,生成的随机数有极小概率大于最大值(这个概率随着最大值和最小值的差距增大而增大)
                      不准备单发一个修复bug版了,准备和下一个版本(加权随机数)一起发布


                      IP属地:安徽来自Android客户端14楼2019-04-05 16:37
                      回复
                        大家觉得这个功能如何?




                        IP属地:安徽15楼2019-04-05 18:28
                        回复
                          我觉得我离成功不远了
                          现在还有点小bug,待我修复一下


                          IP属地:安徽来自Android客户端16楼2019-04-06 14:53
                          回复
                            最新1.0版本发布了!!!!!
                            *模块更名为[随机数模块](为了与2b做的随机模块区分)
                            *添加加权随机数组,可以控制每个数组刷出的概率
                            使用方法:
                            1、输入/function ran:setweight建立一个加权随机数组;
                            2、根据所得反馈值(只有函数的执行者能看见),编辑该实体的ran_min、ran_max、ran_weight分数;
                            示例:/scoreboard players set @e[scores={ran_weightid=0}] ran_min 1
                            3、所有数组设置完毕后,输入/execute as <目标实体> at @s run function ran:weight即可加权随机生成数值;
                            4、所有数组的存在形式是拥有ran_weight标签的盔甲架,若需要清空数组只需输入/kill @e[tag=ran_weight]即可。

                            全新的调试模式:
                            1、在函数后加debug(示例:ran:randomdebug)来进入调试模式;
                            2、进入调试模式后,我们会检查目前模块的分数设置情况,一旦发现错误,我们会向你汇报。



                            IP属地:安徽17楼2019-04-06 16:22
                            回复
                              2026-02-19 12:13:36
                              广告
                              不感兴趣
                              开通SVIP免广告
                              基岩版开心的退了出去便打出来了scoreboard player * random 1 100


                              IP属地:江苏来自iPhone客户端18楼2019-06-04 06:16
                              回复