c++11 - 制作自定义的随机数分布

标签 c++11 random

我试图理解 c++11 中不同的分布对象,但我发现它令人难以承受。我希望你们中的一些人能够并且将会提供帮助。


这就是我研究这一切的原因:

我需要一个随机数生成器,每次使用它时我都可以调整它,以便它更有可能再次生成相同的数字。我需要满足的第二个要求是我需要生成的随机数仅为这些数字: {1, 2, 4, 8, 16, ..., 128}

第三个也是最后一个要求是,在某些情况下我需要从上面的集合中跳过一个或多个数字。

我的问题是我不明白各种分布对象的描述。因此,我无法确定需要使用哪些工具来满足我的上述需求。

有人可以告诉我需要什么工具以及如何使用它们吗?回复越清晰、简洁和详细越好。

最佳答案

您的范围可以使用 [0, 7] 范围内的随机数 j 生成,然后计算:

1 << j

获取您的电话号码。 std::uniform_int_distribution<>可以很方便地生成 [0, 7] 中的值。

此外,您可以使用std::bernoulli_distribution (返回一个随机 bool 值)来决定下一个数字是否与上一个数字相同,或者是否应该生成一个新数字。 std::bernoulli_distribution默认为真/假的概率为 50/50,但您可以在 bernoulli_distribution 中自定义该分布。构造函数为您喜欢的任何内容(例如 80/20 或其他)。

如果这还不够清楚,请输入一些代码。尝试对其进行编码,如果不起作用,请发布您所拥有的内容,我相信有人会提供帮助。

哦,忘记了你的第三个要求:为此,只需将你的 [0, 7] 代放入一个循环中,如果你想出一个你应该跳过的数字,那么迭代循环,否则打破它。

关于c++11 - 制作自定义的随机数分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099585/

相关文章:

c++ - 在 C++ 中使用随机数生成器作为函数的意外值

php - 生成一百万个唯一的随机 12 位数字

c++ - 海湾合作委员会 : C++11 inline object initialization (using "this") does not work when there is a virtual inheritance in hierarchy

c++ - "Static counter"类型行为异常

c++ - 这个函数是原子线程安全的吗

c++ - 通用输出类签名的正确类型

ruby-on-rails - 使用 Active Record 选择一个随机记录的最有效方法是什么

c++ - 用不重复的随机数填充二维数组

r - 在 R 中,从 df 中采样 n 行,其中某个列具有非 NA 值(有条件地采样)

c++ - 用户定义的文字作为可变参数模板