《我的世界》1.8指令 Minecraft中算圆周率

来源:游戏狗时间:2014-05-21 09:09:52

  我的世界1.8指令用来在Minecraft中算圆周率,这个方法是利用了随机数生成器和1.8强大的记分板系统将这种算法在MC中实现了,具体的操作方法我们一起来看看。

《我的世界》1.8指令 Minecraft中算圆周率

  电路展示

  预备知识:

  任取三个整数,能构成钝角三角形的概率是:

  设这三个正数中最大的一个为a,另外两个分别为x,y.

  则有0

  (i)要构成一个三角形,则须满足:x+y>a,这样的点的集合表示的是正方形面积a^2的一半,

  (ii)而x,y,a形成钝角三角形,还需满足x2+y2

  圆(πa2/4)减去一个三角形(a2/2)后的弓形。

  于是概率P=[(πa2/4)-(a2/2)]/a2=(π-2)/4

  所以我就利用随机数生成器和1.8强大的记分板系统将这种算法在MC中实现了。

  随机器不断生成3个1-18内的随机数a,b,c,被送到右边进行判断。若能构成钝角三角形则会输出。如此循环计算,每次计算大概耗时2s左右。这里挂了一会机,已经进行了一千多次运算:

  m=1566,n=391(m为总次数,n为成功次数)

  ∴n/m=P(构成钝角三角形的)=(π-2)/4

  解得差不多为3,当然计算次数过少,误差还是比较大的。

  原理

  随机器大家都比较熟悉了,就不再赘述了。主要讲解一下检测部分。

  1.三组主随机器在两个子随机器中抽取一个

  2.各组子随机器抽取三个1~18的随机正整数存入a,b,c

  3.确认是否存在以a,b,c为三边的三角形

  (1)求a+b,a+c,b+c的值

  ①if a+b>c

  /scoreboard objectives operation @a a+b += @a b

  /scoreboard objectives operation @a a+b += @a a

  ②if a+c>b

  /scoreboard objectives operation @a a+c += @a c

  /scoreboard objectives operation @a a+c += @a a

  ③if b+c>a

  /scoreboard objectives operation @a b+c += @a c

  /scoreboard objectives operation @a b+c += @a b

  (2)将a+b,a+c,b+c与c,b,a相减

  ①a+b-c

  /scoreboard objectives operation @a nc += @a a+b


  /scoreboard objectives operation @a nc -= @a c

  ②a+c-b

  /scoreboard objectives operation @a nb += @a a+c

  /scoreboard objectives operation @a nb -= @a b

  ③b+c-a

  /scoreboard objectives operation @a na += @a b+c

  /scoreboard objectives operation @a na -= @a a

  (3)检测a+b-c,a+c-b,b+c-a是否全部大于1

  /testfor @p[score_nc_min=1]

  /testfor @p[score_nb_min=1]

  /testfor @p[score_na_min=1]

  4.确认是否存在以a,b,c为三边的钝角三角形

  (1)求a2,b2,c2的值

  /scoreboard objectives operation @a a2 *= @a a

  /scoreboard objectives operation @a a2 *= @a a

  /scoreboard objectives operation @a b2 *= @a b

  /scoreboard objectives operation @a b2 *= @a b

  /scoreboard objectives operation @a c2 *= @a c

  /scoreboard objectives operation @a c2 *= @a c

  (2)求a2+b2,a2+c2,b2+c2的值

  ①a2+b2

  /scoreboard objectives operation @a a+b2 += @a b2

  /scoreboard objectives operation @a a+b2 += @a a2

  ②a2+c2

  /scoreboard objectives operation @a a+c2 += @a c2

  /scoreboard objectives operation @a a+c2 += @a a2

  ③b2+c2

  /scoreboard objectives operation @a b+c2 += @a c2

  /scoreboard objectives operation @a b+c2 += @a b2

  (3)将c,b,a与a2+b2,a2+c2,b2+c2相减

  ①c2-(a2+b2)

  /scoreboard objectives operation @a nc2 += @a c2

  /scoreboard objectives operation @a nc2 -= @a a+b2

  ②b2-(a2+c2)

  /scoreboard objectives operation @a nb2 += @a b2

  /scoreboard objectives operation @a nb2 -= @a a+c2

  ③a2-(b2+c2)

  /scoreboard objectives operation @a na2 += @a a2

  /scoreboard objectives operation @a na2 -= @a b+c2

  (4)检测c2-(a2+b2),b2-(a2+c2),a2-(b2+c2)任意一个大于1

  /testfor @p[score_nc2_min=1]

  /testfor @p[score_nb2_min=1]


  /testfor @p[score_na2_min=1]

  大触的存档:百度网盘

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com