⭐✔️
本帖最后由 贰逼 于 2017-7-13 23:54 编辑

文件:
random.rar (573 Bytes, 下载次数: 191)
功能即获取[min,max]中的随机数
想法来自1.12 Custom-Range Random Number Function

演示:


原理:


全部代码:
来自群组: Command Block Logic

1392684709
表示没看懂,随机数在MC有什么用,这个插件是针对什么的?。不管怎么说抢个沙发

⭐✔️
1392684709 发表于 2017-7-13 23:57
表示没看懂,随机数在MC有什么用,这个插件是针对什么的?。不管怎么说抢个沙发 ...

.mcfunction是原版的函数文件

1392684709
贰逼 发表于 2017-7-13 23:54
.mcfunction是原版的函数文件

哦,是因为1.12版本中新增了functions对吧。

炫音界
OAO哇,恐怖如斯,看不懂

chyx
本帖最后由 chyx 于 2017-7-14 04:52 编辑

表示看懂了

就是二进制的每一位数随机是1或者0 得到一个0~2147483647的随机数

然后用这个数除以区间长度再加上区间左端点转成所需区间里的。。。

有一个小瑕疵 就是因为2147483647不一定是区间长度的整数倍

造成在取余数的时候得到的各个余数概率不等



------------------------------------------------

举个例子:https://www.zhihu.com/question/62091492

C++的RAND函数生成的值为什么存在严重的不随机性?
用到0~10000的随机,在C++中使用了rand()%10000,结果测试了100亿次数据后,发现在2767值处出现断层,前面0~2767都是122万次左右,后面的都只有91.5万次左右。。。这个是怎么回事,求助~~


楼主和这个题主犯了一样的错误。
------------------------------------------------

当然 楼主的2147483647相比于使用的区间应该是足够大的(对于通常的使用)
不过如果有人使用0~1000000000的随机数这个问题就会变得很明显

乾.坤
chyx 发表于 2017-7-14 04:47
表示看懂了

就是二进制的每一位数随机是1或者0 得到一个0~2147483647的随机数

那么,就C++而言,是否可以通过
(double) rand() / RAND_MAX * 100
来均匀取值?
在MC中是否也可通过类似的方式使随机概率更平均呢?

下一页 最后一页