gpt4 book ai didi

c++ - 从大范围内生成一个随机数,除了大范围中间的较小范围

转载 作者:行者123 更新时间:2023-11-28 01:44:51 29 4
gpt4 key购买 nike

这行代码生成一个从 -9 到 9 的数字:

std::uniform_int_distribution<int> vDist(-9, 9);

但是,我想要做的是生成一个从 -9 到 9 的数字,except -3 到 3。我不希望随机数生成器给我一个 -3 以内的数字到 3.

如何编写代码来排除这个内部范围?

最佳答案

两种可能的解决方案:

  • 拒绝抽样:
    检索一个随机数。如果它在 -3 和 3 之间,请重试(do-while 循环)
  • 映射:
    在较小的区间(例如 [-6, 5])中采样,并定义一个将此区间映射到
    的一对一映射[-9, -4] u [4, 9]:

    if (value < 0) value -= 3;
    else value += 4; // if (value >= 0)

关于c++ - 从大范围内生成一个随机数,除了大范围中间的较小范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560188/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com