在4个整数之间生成随机数的最有效方法是什么? 例如:
它会从这两个范围中选择数字 从4到8和14到17 .. 我想要选中号码:11 然后制作随机数发生器我们将有2个选项
我正在等待回复和答案请帮助c ++不要使用stdio.h
答案 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
。支持的: