Minecraft(我的世界)中文论坛

标题: 【无CB】对随机数生成的一些讨论

作者: pacerrecap    时间: 2014-2-21 20:38
标题: 【无CB】对随机数生成的一些讨论
本帖最后由 pacerrecap 于 2014-2-21 20:42 编辑

我不想写开场白了,直接开始说吧,,
【此帖只讨论2随机直至16随机,其他情况由于需要多根输出线,过于复杂,暂不讨论】

首先,这是大家所熟知的随机数生成单元,火把下边沿时回收漏斗内物品,上边沿时随机发射投掷器中的一个物品,投掷器每个有物品的物品栏发射几率相等。
漏斗输出信号强度如下:
64堆叠物品(绝大多数,红石,泥土,木材...)一个:强度1
16堆叠物品(雪球)一个:强度2
1堆叠物品(矿车,工具,武器...)一个:强度3
由此我们可以输出一个1-3之间随机的信号强度,输出概率取决于投掷器内的物品种类。注意到在火把熄灭时信号会减小至0,故亦可接入模电锁存,来输出连续的信号。

此法称为“单随机”。按此法处理,可以输出2\3\4\6\8\9\12\16随机,对于其余情况,此法并不可行,因此我们引用另外一种方法。


此图展示了5随机的一种生成方法。
将四组漏斗-投掷器并列输出,最左侧漏斗是输出11强度信号(64、64、64、48)
四组漏斗-投掷器按照距离输出端远->近顺序分别为1、2、3、4。
漏斗-投掷器号    内容物
1                   树叶#1 x1 矿车 x1
2                   树叶#1 x1 树叶#2 x1 矿车 x1
3                   树叶#1 x1 树叶#2 x1 树叶#3 x1 矿车 x1
4                   树叶#1 x1 树叶#2 x1 树叶#3 x1 树叶#4 x1 矿车 x1
注:四种树叶可换成其他64堆叠的不同物品

此为3号投掷器内容物,其中一个树叶在漏斗中
原理部分:

由图,只有比较器输出3强度(即漏斗内为矿车)时才能点亮中继器,而越靠下的中继器输出信号越强
考虑到最终输出为中继器组输出减11,因此:
输出4信号概率:1/5
输出3信号概率:(1/4)x(1-1/5)=1/5
输出2信号概率:(1/3)x(1-2/5)=1/5
输出1信号概率:(1/2)x(1-3/5)=1/5
输出0信号概率:1-4/5=1/5
由此巧妙地实现了5随机的输出,而避免了对单组漏斗-投掷器的输出物进行困难的分情况讨论。
(此结构的变形10随机器已经应用于我擂台赛作品的随机输出环节)
此法称为“并排随机”,可用于输出2-9随机,其变种可输出10-16任何合数的随机,在输出6\9随机时尤为简便

可以证明,由于无法构造分母11和13,11随机和13随机无法用原版红石实现,若要实现请用命令方块随机,参考此贴http://www.mcbbs.net/thread-215977-1-1.html
结合此帖http://www.mcbbs.net/thread-134568-1-1.html的内容,在此给出2-16随机的最简方案:
小于:前者较简
等于:结构相同
2:单随机2
3:单随机3
4:2^n随机4
5:并排随机5
6:并排随机6
7:并排随机7
8:2^n随机8
9:并排随机9
10:单随机2 x 并排随机5
11:命令方块随机11
12:单随机2 x 并排随机6
13:命令方块随机13
14:单随机2 x 并排随机7
15:单随机3 x 并排随机5
16:2^n随机16
特殊说明:对于15,请用模数转换分情况讨论单随机的0、1、2来分别+0、+5、+10,其余偶数只要判断单随机输出信号有无即可。
@jianghr @PpY_SK @PTmissionary


[birch]





作者: pacerrecap    时间: 2014-2-21 20:43
简直无语,各种@不上
@jianghr @PpY_SK @PTmissionary

作者: 飞鱼在天    时间: 2014-2-21 20:43
  红石新手默默抢沙发……
作者: KVIS    时间: 2014-2-21 20:59
看不懂。。。。。不过感觉很厉害- -!
作者: PTmissionary    时间: 2014-2-21 21:10
写东西辛苦了呀。
不过你说11随机13随机什么不能实现我可不这样认为。

弄个16随机,加上一点时序内容,生成大于11的数字就取消掉重新生成一个,这样不就是11随机了么。

那个五随机还是很巧妙的。
作者: 离去    时间: 2014-2-21 21:21
不懂是什么意思?{:10_527:}
作者: LOVE亮亮    时间: 2014-2-21 23:49
离去 发表于 2014-2-21 21:21
不懂是什么意思?

果然是红石大触,我也不懂= -
作者: 我是基岩    时间: 2014-2-22 02:47
LZ的头像,我不想吐槽了,LZ一起的头像不是很好吗。。
作者: 15834179549    时间: 2014-2-22 07:36
CB是什么???????
作者: 你哥在这    时间: 2014-2-22 08:08
pacerrecap 发表于 2014-2-21 20:43
简直无语,各种@不上
@jianghr @PpY_SK @PTmissionary

不太懂有什么用
作者: 离去    时间: 2014-2-22 09:19
LOVE亮亮 发表于 2014-2-21 23:49
果然是红石大触,我也不懂= -

对啊太复杂了都看不懂
作者: jianghr    时间: 2014-2-22 14:34
其实我还是比较习惯PT君的思路,多了去掉,只要2^n选择恰当有输出的概率都大于50%,根据信号强度的五随机设想确实很好。
作者: pacerrecap    时间: 2014-2-22 14:35
jianghr 发表于 2014-2-22 14:34
其实我还是比较习惯PT君的思路,多了去掉,只要2^n选择恰当有输出的概率都大于50%,根据信号强度的五随机设 ...

多了去掉这个感觉略坑,如果人品爆发连着几次都是141516那就时间太长了吧
作者: jianghr    时间: 2014-2-22 14:49
pacerrecap 发表于 2014-2-22 14:35
多了去掉这个感觉略坑,如果人品爆发连着几次都是141516那就时间太长了吧 ...

实际程序设计中是RND(X)*(上限-下限+1)+下限。问题是这玩意在红石系统无法实现。而且这个适用性广泛一些,简化就省单次循环过程吧。
作者: pacerrecap    时间: 2014-3-1 18:27
jianghr 发表于 2014-2-22 14:49
实际程序设计中是RND(X)*(上限-下限+1)+下限。问题是这玩意在红石系统无法实现。而且这个适用性广泛一些 ...

发现这个。。。
现在我可以负责任地说,这玩意儿已经可以实现了,虽然精度确实不高
作者: jianghr    时间: 2014-3-2 23:03
pacerrecap 发表于 2014-3-1 18:27
发现这个。。。
现在我可以负责任地说,这玩意儿已经可以实现了,虽然精度确实不高 ...

1~9的精度限制么……如果结合箱子抽取的话或许还会多一点
作者: srwog2nd    时间: 2014-3-2 23:19
{:10_499:}感觉唱片会比物品好用些