本帖最后由 SHEEP_REALMS 于 2021-10-18 08:49 编辑

复制代码

复制代码
复制代码复制代码
1.15+ 谓词随机数生成器
来自作者的一些爱看不看的话

使用方法
载入数据包:
random.zip
(2.61 KB, 下载次数: 6)

将此文件放入存档的datapacks文件夹中,无需解压
在游戏中输入指令/reload以重新加载数据包
在函数、命令方块中依次执行:
- scoreboard players set #random_min value 【随机数最小值】
- scoreboard players set #random_max value 【随机数最大值】
- function random:random
生成的随机数将会储存在#random的value计分板下

原理讲解
1.在random/functions/load.mcfunction创建一个value计分板
- scoreboard objectives add value dummy
2.创建random/predicates/random.json的随机谓词(让谓词有50%的几率成功)复制代码
- {
- "condition": "minecraft:random_chance",
- "chance": 0.5
- }
3.创建random/functions/random.mcfunction和循环函数random/functions/random_add.mcfunction
- #random/functions/random.mcfunction
- scoreboard players set #random value 0
- scoreboard players set #random_add value 1
- execute if predicate random:random run scoreboard players operation #random random += #random_add random
- function random:random_add
- scoreboard players operation #random_interval value = #random_max value
- scoreboard players operation #random_interval value -= #random_min value
- scoreboard players add #random_interval value 1
- scoreboard players operation #random value %= #random_interval value
- scoreboard players operation #random value += #random_min value
- #random/functions/random_add.mcfunction
- scoreboard players operation #random_add value += #random_add value
- execute if predicate random:random run scoreboard players operation #random value += #random_add value
- execute unless score #random_add value matches 1073741824 run function random:random_add
此处是将二进制的一堆1分解,
如果此处是谓词判断成功,则该位设为1(在原有的基础加2位数-1)
比如判断30次,就会有230的随机数可以生成
例:0101 1101 1101 0110 0111 1111 0101 1001 -> 1,574,338,393
优点&缺点