python随机生成10个整数、没有范围_Python-如何生成具有多个范围的随机整数?

你好!

这是一个有趣的问题;当你意识到要实现真正的随机性,选择一个特定范围的概率必须由该范围的长度来衡量时,这个问题就变得有趣了。

等长范围:

如果这三个范围的长度相等,例如范围(0,10)、范围(20,30)和范围(40,50);那么,要选取一个随机数,我们可以执行以下操作:随机选取一个范围。

从该范围中选择一个随机数。

不等长范围:

现在,考虑三个大小不等的范围,比如范围(0,2),范围(4,6)和范围(10100)

第三个范围比前两个大得多。如果我们在处理同样长的区间时采用同样的策略,我们将倾向于从前两个区间中选择数字。

为了从三个不等长的区间中选出真正的随机数,有两种策略。

策略1:使用概率

选择一个区间的概率应该是这样的,即选择一个数字的概率保持不变。我们可以通过权衡发射较短射程的可能性来实现这一目标。

然而,不是计算概率权重,而是有更好的解决方案。见战略2。

策略2:合并范围

我们可以简单地将这三个范围合并成一个单独的范围。然后,从合并范围中随机选取一个数字。很简单:import random;

def randomPicker(howMany, *ranges):

mergedRange = reduce(lambda a, b: a + b, ranges);

ans = [];

for i in range(howMany):

ans.append(random.choice(mergedRange));

return ans;

让我们看看它的实际效果:>>> randomPicker(5, range(0, 10), range(15, 20), range(40, 60));

[47, 50, 4, 50, 16]

>>> randomPicker(5, range(0, 10), range(70, 90), range(40, 60));

[0, 9, 55, 46, 44]

>>> randomPicker(5, range(0, 10), range(40, 60));

[50, 43, 7, 42, 4]

>>>

randomPicker的另一个好处是它可以处理任意数量的范围。

希望这有帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值