首先让我明确一点,这是一个人为的例子,而不是现实世界的问题。
如果我在创建 0 到 10 之间的随机数时遇到问题。我这样做 11 次以确保不会再次绘制先前出现的数字,如果我得到一个重复的数字,我会再次创建另一个随机数以确保它有不早见。所以基本上我得到一个从 0 到 10 以随机顺序排列的唯一数字序列,例如 3 1 2 0 5 9 4 8 10 6 7 等等
现在想出逻辑来确保随机数是唯一的,而不是我们之前绘制的,我们可以使用多种方法
使用 C++std::bitset
并将索引对应的位设置为每个随机数的值。下次抽到新的随机数时再检查。
或者
使用 astd::map<int,int>
来计算次数,甚至是简单的 C 数组,其中一些标记值存储在该数组中,以指示该数字是否发生。
如果我必须避免上述这些方法并使用一些数学/逻辑/按位运算来查找之前是否已绘制随机数,有没有办法?