基于整数或浮点数的随机数生成器

时间:2017-05-22 05:47:12

标签: python python-3.x random

我有一个2D数组

b=[[1,100],[0.0,0.8],[11,111],[0.8,0.999],[11,111],[16,256],[1,10]] 

包含整数和浮点数。我想选择一个随机数。我正在经历循环:

for i in range(6):
   aa=b[i][0]
   bb=b[i][1]
   a[i]=rand(aa,bb)
   print(a[i])

现在我想从"变量"中的范围中选择随机数。当它的整数时,它从整数中选择一个随机数,并且当它浮动时它从" b"中的范围中选择随机浮点数。

我见过函数,要么返回float或整数随机数,要么不返回两者。

2 个答案:

答案 0 :(得分:1)

这将根据b中范围的内容生成一个整数或浮点数的随机数列表:

[(random.randrange if isinstance(lower, int) 
  else random.uniform)(lower, upper) 
 for lower, upper in b]

如果遇到整数,我们只选择使用random.randrange,否则我们会使用random.uniform

答案 1 :(得分:0)

  1. 构建一个接受范围参数的自定义方法。
  2. 如果范围是整数,则只生成范围内的随机数。
  3. 如果范围是浮点数,则将范围转换为整数,即[0.8,0.999]变为800,999,因子乘法为10 ^ 3(或者您可以使用10 ^ 4获得更高的精度)。生成一个介于800-999之间的随机整数,比如856,将其除以浮动所用的倍增因子 - >整数转换,在这种情况下为10 ^ 3,因此随机浮点数为0.856。
  4. 决定使用多大的乘法因子将取决于您的浮动范围的小数精度等级。