基本上我必须使用一个随机函数,它可以返回一个介于 0 和 2^16-1 之间的数字。
我正在尝试利用它并生成 1 到 6 之间的 6 个间隔(考虑骰子扑克)。基本上使用为我随机生成的一个数字(我只能指定范围),最好只调用一次。然后取该数字并将其“拆分”为 6 个骰子,其中的值将在 1-6 之间。
我有点不确定将使用的技术,想到的一件事是位掩码,但我不确定这是否是正确的上下文。
从二进制的角度来看,骰子值在 0-5 之间是合理的。这将给我们二进制数 000-101。现在随机函数返回的最大值将为 101101101101101101(六个骰子,每个为“6”),十进制表示随机 int 返回的上限为 187245。下限为 0。现在假设random 函数返回数字 66508,将其转换为二进制形式,我们得到 010|000|001|111|001|100,这还不够好!在这种情况下,其中一个骰子是 111 = 7,而当间隔应该是 0-5 (1-6) 时,我们无法得到它:(
我需要找出一种方法,限制范围内的小数可以包含六个值为 1-6 (0-5) 的骰子,但我需要一些帮助。