Python在生成和排序4个随机变量时出错

Python在生成和排序4个随机变量时出错,python,random,Python,Random,我试图在Python中模拟连续随机生成的数字分布,并发现组合数字(y=x1+x2)在p(0.9)范围内 n=10000 x11=[random.random()表示范围内的i(n)] x12=[random.random()表示范围内的i(n)] x21=[-0.5*(log(1-random.random()))表示范围(n)内的i) x22=[-0.5*(log(1-random.random()))表示范围(n)内的i) x31=[random.random()表示范围(n)中的i] x3

我试图在Python中模拟连续随机生成的数字分布,并发现组合数字(y=x1+x2)在p(0.9)范围内
n=10000
x11=[random.random()表示范围内的i(n)]
x12=[random.random()表示范围内的i(n)]
x21=[-0.5*(log(1-random.random()))表示范围(n)内的i)
x22=[-0.5*(log(1-random.random()))表示范围(n)内的i)
x31=[random.random()表示范围(n)中的i]
x32=[范围(n)内i的随机均匀(0,2)]
x41=[0.25如果为random.random()<0.8否则为1.5,表示范围(n)内的r]
x42=[0.25如果为random.random()<0.8否则为1.5,表示范围(n)内的r]
x11到x42是成对的情况,我试图得到它们将落在0.9到1.8之间的概率,其中生成的列表对被组合,然后进行操作。所以x11和x12被组合,然后得到期望值、方差和0.9到1.8 p(x)

def test():
  x1,x2,c = 0.0,0.0,0.0
  for i in range(10000):
    if random.random()< 0.8:
      x1 += 0.25
    else:
      x2 += 1.5
    y = x1 + x2
    if y>0.9 and y<=1.8:
      c = c + 1
  return x1,x2,c

print "test: ",test()

def sim(a,b):
  #pyab1 = sum([a for a in a if a>0.9 and a<=1.8])/10000
  #pyab2 = sum([b for b in b if b>0.9 and b<=1.8])/10000
  #print "*****",float(pyab1+pyab2)
  #print a+b
  #array1 = [[a],[b]]
  array1 = a+b
  #array1.extend(a)
  #array1.extend(b)
  #c = 0
  #for y in array1:
    #if y>0.9 and y<=1.8:
      #c = c + 1
  pyab = sum([y for y in array1 if y>0.9 and y<=1.8])/10000
  print("P(a < x <= b) : {0:8.4f}".format(pyab))
def test():
x1,x2,c=0.0,0.0,0.0
对于范围(10000)内的i:
如果random.random()<0.8:
x1+=0.25
其他:
x2+=1.5
y=x1+x2

如果y>0.9和y0.9、a0.9和b0.9、y0.9和y很可能您最好更换

pyab = sum([y for y in array1 if y>0.9 and y<=1.8])/10000

pyab=sum([y表示数组1中的y,如果y>0.9和y0.9,并且yI不完全理解您需要什么。sim()如何)调用,你能不能放一段代码来显示它是如何被调用的,预期的输出,然后是实际的输出。刚刚添加了它。它在我的代码上面的目的处剪掉了。我会在这里重申它,以便它可见。我试着在Python中模拟一个连续的随机生成的数字分布,并找到组合的数字(其中y=x1+x2)在p(0.9抱歉,但是它仍然给出了所有不正确的值,除了x21,x22对(在编辑之前也是正确的)。它在我的代码之前剪掉了我文章的顶部,我说这是两个独立生成的数字,它们相加(y=x1+x2)因此,对于for循环的每个过程,“y”将在0.9和1.8之间进行比较。
array1=a+b
不求和数组,您应该使用
array1=[sum(i)for i in zip(a,b)]
insteadno抱歉,仍然给出了错误的值。我担心代码的逻辑可能有问题。你能显示你得到的结果和你想要得到的结果吗?否则我无法遵循你的代码…这些是理论值的近似值,但显示出结果有多远。案例1:P(acase 1: P(a < x <= b) : 0.7169 #should be 0.575 case 2: P(a < x <= b) : 0.4282 #should be 0.3371 case 3: P(a < x <= b) : 0.5966 #should be 0.4413 case 4: P(a < x <= b) : 0.5595 #should be 0.2
pyab = sum([y for y in array1 if y>0.9 and y<=1.8])/10000
pyab = len([y for y in array1 if y>0.9 and y<=1.8])/len(array1)