【发布时间】:2013-06-03 19:49:58
【问题描述】:
在我尝试使用一组随机数据作为熵源处理时出现的数学/编程问题。在我使用 Random.org 的 pregenerated random files 之类的东西作为熵源的情况下。像这样的原始数据是随机的 0 和 1,并且可以作为随机字节 (0-255) 或更大的范围作为 2 的幂。我试图尽可能高效地使用这个随机源,因为它的长度是有限的,所以我不想使用比我需要的更大的集合。
如果您想要一个能被 256 整除的数字(例如 100 到 355、0 到 15 等),那么随机字节是公平的。但是,如果我想要一个从 1 到 100 的数字怎么办?这不太适合 256。我可以将 0-199 分配给 1-100 范围两次,留下 200-255 作为额外的,如果抽到就必须丢弃,否则该范围内的 55 个数字将被不公平地加权更频繁地出现。
丢弃超出范围的数字是唯一公平的选择吗?或者有没有一种数学方法可以在 1-100 范围内相当“模糊”这 55 个数字?
我想出的唯一一个知道我将能够使用该数字而不丢弃结果的其他选择是吸收更多的字节数,以减少偏差程度(0-255 将有一些在 1-100 中的数字有两个“平局”,一些有三个;3:2 的几率 = 50% 的可能性。十个字节 (0-2,550) 的几率为 26:25 = 4% 的可能性。等等。)这会消耗更多数据,但更可预测。
对于我正在尝试做的事情是否有一个术语(不能在 Google 上搜索我无法命名的内容)?是否有可能,或者我是否必须承认我将不得不丢弃与我想要的范围不完全匹配的数据?
【问题讨论】: