Dahesor 3/4/2021, 3:42:13 PM
本帖最后由 Dahesor 于 2021-8-11 13:42 编辑

超/最方便的的随机数生成!

我在写scoreboard的指令教程的时候突然猛醒——这里不是有一个超方便的随机数生成吗?找到了一种,至少在7位数以内有效的方法。
我不卖关子:
1. 如果没有指定生成的实体UUID,他的UUID不是随机的么?
2. 我们不是可以用execute store把UUID导入记分板里么?
那......我们还用什么谓词,用什么战利品表,还用什么...复杂的数据包?
好吧好吧,我不能肯定UUID是真“绝对随机”,但......说真的,你要那么随机干嘛?
而且,逻辑学告诉你,永远无法判断一串数是不是随机的。(笑)
UUID有几位?
说是“4个32位数字”。但测试后,不一定有多长。
一般来说,有个8到10位。
记分板最多也就10位而已。
而“把大数变小”绝对不难。

例:
1. 生成一个随便什么东西,为了方便,我们用盔甲架。再创建一个记分板。
  1. /scoreboard objectives add r dummy
复制代码
  1. /summon armor_stand ~1 ~ ~ {Tags:["random"]}
复制代码
记分板就叫r,盔甲架加了个标签以便管理。
然后用execute store:
  1. /execute store result score @e[tag=random,limit=1] r run data get entity @e[tag=random,limit=1] UUID[0]
复制代码
把大数缩小用记分板求余就好了,一点不难。比如,要一百以内随机数:


  1. /scoreboard players add max 100
复制代码
设定一个叫max的虚拟对象分数为100。
然后使用max对分数求余:
  1. /scoreboard players operation @e[tag=random,limit=1] r %= max r
复制代码

比如190478653输出53

结束
当然,这方法对7位以上大数可能不太好就是了。
所以基本上可以宣布:有关7位数以下的随机器设置————解决了(强迫症患者除外)






wshycaa 3/4/2021, 5:48:18 PM
另辟蹊径查看图片 (t.me)

wmw1939103823 3/5/2021, 1:49:19 AM
这个指令挺刺激

Dahesor 3/6/2021, 5:10:06 AM
本帖最后由 Dahesor 于 2021-3-7 13:18 编辑

再次提醒,无法确认UUID的生成是随机的。

而且,由于数位的关系,8位以上大数无效。

1095001319 3/7/2021, 2:54:22 AM
还有这种操作???

墨柔Morrr 3/7/2021, 3:39:54 AM
666啊大佬秀

jason_sun 3/7/2021, 4:30:04 AM
Dahesor 发表于 2021-3-6 13:10
再次提醒,无法UUID的生成是随机的。

而且,由于数位的关系,8位以上大数无效。 ...

可以靠多个UUID相乘即可

洞穴夜莺 3/7/2021, 4:35:34 AM
jason_sun 发表于 2021-3-7 12:30
可以靠多个UUID相乘即可

那就不随机了

Dahesor 3/7/2021, 5:17:22 AM

不过真的愿意的话可以使用百余个UUID相加以得到10位大数。
不过应该用不上这种方法。(也一般用不上太大的数)

洞穴夜莺 3/7/2021, 5:21:17 AM
Dahesor 发表于 2021-3-7 13:17
不过真的愿意的话可以使用百余个UUID相加以得到10位大数。
不过应该用不上这种方法。(也一般用不上太大 ...

相加同样会让数字变得不随机

ppkes 3/7/2021, 8:22:03 AM
666666666666666666666查看图片 (t.me)

jason_sun 3/9/2021, 1:57:01 PM
洞穴夜莺 发表于 2021-3-7 12:35
那就不随机了

但大致随机就差不多了吧,一般要求没这么多

洞穴夜莺 3/12/2021, 2:54:55 PM
jason_sun 发表于 2021-3-9 21:57
但大致随机就差不多了吧,一般要求没这么多

但是许多的定理都是建立在随机数生成器均匀随机的前提下的

唱爱河的叶子 5/21/2021, 3:39:51 PM
强迫症狂喜awa

释安 5/29/2021, 5:54:54 PM
不明觉厉!

吹风机客户 6/5/2021, 1:49:23 PM
更大的数字可以用多个uuid相乘吧

912055116 6/5/2021, 6:02:26 PM
辛苦了,辛苦了,很不错!

机器人WBW 7/19/2021, 12:35:35 PM
挑个刺_(:3JZ)_  第三段代码里 enetity 应该是entity

机器人WBW 7/19/2021, 12:56:06 PM
查看图片 (t.me)顺带一提……做成数据包啦
https://www.mcbbs.net/thread-1227670-1-1.html

wuduheibai 7/20/2021, 8:47:05 AM
代码大佬好厉害666

qiaoninei 7/20/2021, 9:10:15 AM
n b               

时之虫 7/20/2021, 10:36:54 AM
这个随机数是均匀分布的吗

98745612666 7/22/2021, 10:35:15 AM
牛哇!!!

尘封苏醒 7/22/2021, 1:43:52 PM

mcbbs有你更精彩,玩到老学到老~~~

一只傻小白 8/11/2021, 1:52:45 AM
还有这种操作的?

小杏杏不开心 8/12/2021, 4:54:02 AM
查看图片 (t.me)qwqwqwqwqwqwqwq

rd_kaoya 8/12/2021, 9:56:31 AM
本帖最后由 rd_kaoya 于 2021-8-12 18:07 编辑

那要是随机5~10呢?先求余5再加5吗

rd_kaoya 8/12/2021, 9:59:01 AM
本帖最后由 rd_kaoya 于 2021-8-12 18:19 编辑

emm...而且似乎不是均匀分布的,比如实体的uid在某个某个范围,然后求余,多少小数随机到的概率比大数相对要多,这个值会随着区间增大而增大。比如随机一个七位八位的数字,较小的数字随机到的概率是较大数字的近两倍

Mooe_htao 8/12/2021, 4:24:35 PM
6666666666

想牵着你的手丶 8/13/2021, 1:19:06 AM
厉害呀。。

小杏杏不开心 8/13/2021, 11:08:15 AM
水回复中qwq

熙欧_筱狐UwU 8/14/2021, 12:24:47 PM
哦对哦!我之前怎么没想到,害得我网上找了好半天,然后用loot table搞了个巨复杂的:(

川の熊 8/14/2021, 6:38:11 PM
这个可以有,可以干预很多附魔的物品

ptime 11/13/2021, 9:27:38 AM
可以靠多个UUID相乘即可

邦邦邦邦 11/20/2021, 11:56:04 AM
除了强迫症患者要除外以外,还有麻瓜也要除外,因为看不懂

凉夏小西瓜 11/21/2021, 2:50:50 PM
不明觉厉 大大6666666

Herbertttt 11/25/2021, 8:22:50 AM
这个随机数字是否可以用在一些服务器的抽奖

harukiXaqua 11/30/2021, 3:04:55 PM
想起了以前学C语言的时候用rand做随机数的用法,不知道mc随机数怎么搞

jiuanya 12/4/2021, 11:11:09 PM
不太明白啊,楼主

Soul丶biubiu 1/18/2022, 6:05:36 PM
这指令有点舒服

w1291145670 1/19/2022, 1:19:12 AM
哇,真方便啊

Tian_a233 1/19/2022, 7:56:35 AM
用不到太大的数吧,可以用来抽奖

第一页 上一页 下一页 最后一页