如何编写代码以生成介于两个不同范围之间的随机数?
例如:生成一个随机数,介于5到7之间或10到12之间。可能的结果是5、6、7、10、11或12。
发布于 2015-11-09 15:13:18
选择一个随机数0
或1
。如果该数字是0
,则在第一个范围内选择一个随机数,否则在第二个范围内选择一个随机数。
如果希望两个范围中的每个数字具有相同的概率,则可以根据这两个范围的大小对第一个决策进行加权。
发布于 2016-02-07 21:49:08
我看到了两种方法。假设您的两个范围是minA、maxA和minB,maxB,其中maxA < minB (如果不只是交换这两个范围)
解决方案1:
1) Generate a random number X in [minA, maxB] first
2) if X falls (maxA,minB) goto 1)
3) At this point X is the output
解决方案2(更有效,特别是如果两个范围之间的差距很大):
1) rangeA = maxA - minA, rangeB = maxB - minB;
2) generate a random number X within [0,rangeA+rangeB]
3) if X < rangeA then output minA+X else minB+X
https://stackoverflow.com/questions/33620063
复制相似问题