本帖最后由 清泉呀 于 2020-8-6 23:12 编辑
最近在尝试mc中生成随机数
特来发个图分享一下成果
线性同余法的公式是 :
seed = (a*seed+c)%m
random = ((max-min*seed)/m+min
其中 min 和 max 是想要生成的随机数的范围 值得注意的是 生成的最大随机数为 max-1

在mc 1.14.3版本中实验的指令
scoreboard players set rand_m random 8388607
scoreboard players set rand_c random 524287
scoreboard players set rand_a random 7388607
execute unless score rand_max random matches 1.. run scoreboard players set rand_max random 100
execute unless score rand_min random matches 0.. run scoreboard players set rand_min random 0
#seed = (a*seed+c)%m
execute store result score seed random run time query daytime
scoreboard players operation rand_seed random *= rand_a random
scoreboard players operation rand_seed random += rand_c random
scoreboard players operation rand_seed random %= rand_m random
#random = (max-min)*seed/m + min
scoreboard players operation random random = rand_max random
scoreboard players operation random random -= rand_min random
scoreboard players operation random random *= rand_seed random
scoreboard players operation random random /= rand_m random
scoreboard players operation random random += rand_min random

用python尝试生成10到60的一千万个随机数结果统计
最近在尝试mc中生成随机数
特来发个图分享一下成果
线性同余法的公式是 :
seed = (a*seed+c)%m
random = ((max-min*seed)/m+min
其中 min 和 max 是想要生成的随机数的范围 值得注意的是 生成的最大随机数为 max-1

在mc 1.14.3版本中实验的指令
scoreboard players set rand_m random 8388607
scoreboard players set rand_c random 524287
scoreboard players set rand_a random 7388607
execute unless score rand_max random matches 1.. run scoreboard players set rand_max random 100
execute unless score rand_min random matches 0.. run scoreboard players set rand_min random 0
#seed = (a*seed+c)%m
execute store result score seed random run time query daytime
scoreboard players operation rand_seed random *= rand_a random
scoreboard players operation rand_seed random += rand_c random
scoreboard players operation rand_seed random %= rand_m random
#random = (max-min)*seed/m + min
scoreboard players operation random random = rand_max random
scoreboard players operation random random -= rand_min random
scoreboard players operation random random *= rand_seed random
scoreboard players operation random random /= rand_m random
scoreboard players operation random random += rand_min random

用python尝试生成10到60的一千万个随机数结果统计