生成4个整数之间的随机数

时间:2017-07-25 14:05:07

标签: c++

在4个整数之间生成随机数的最有效方法是什么? 例如:

它会从这两个范围中选择数字 从4到8和14到17 .. 我想要选中号码:11 然后制作随机数发生器我们将有2个选项

  1. 在(3-5)
  2. 之间添加
  3. 在(3-5)
  4. 之间减去

    我正在等待回复和答案请帮助c ++不要使用stdio.h

1 个答案:

答案 0 :(得分:2)

如果这些范围包含在内,您可以选择(r1b-r1a+1)+(r2b-r2a+1)个数字。使用rand(或更好的随机数字库)选择最高(r1b-r1a+1)+(r2b-r2a+1)的非负整数(不包括),然后将该结果映射回范围。

int pick = rand() % ((r1b-r1a+1)+(r2b-r2a+1));
pick += ( pick < (r1b-r1a+1) ) ? r1a : r2a;

假设:

  • r1b >= r1a
  • r2b >= r2a

支持的:

  • 范围1不必在范围2之前。
  • 重叠范围。
  • 负范围端点。