在我尝试使用一组随机数据作为熵源处理时出现的数学/编程问题。在我使用 Random.org 的预生成随机文件作为熵源的情况下。像这样的原始数据是随机的 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% 的可能性。等等)用完更多数据,但更可预测。
有没有我想要做的事情的术语(不能谷歌我不能命名的东西)?是否有可能,或者我是否必须承认我将不得不丢弃与我想要的范围不完全匹配的数据?