从给定的probalbilty创建概率分布函数

时间:2016-04-07 14:57:03

标签: python random probability distribution

我想有一个程序调用一个随机的funtcion,它给定0,1,2作为定义的次数,并计算每次运行的结果。 使用random.randrange(0,3)我得到一个相等的分布。

如何以下列概率获得分发。

  

0:0.4633

     

1:0.3147

     

2:0.2218

这些数字是我在不同函数中计算的变量,它们在我再次运行函数后会发生变化。

import random

zeros = 0
ones = 0
twos = 0

for i in range(10000):
    a = random.randrange(0,3)

    if a == 0:
        zeros = zeros + 1
    if a == 1:
        ones = ones + 1
    if a == 2:
        twos  = twos + 1


print "zeros = ", zeros
print "ones = ", ones
print "twos = ", twos
  

zeros = 3345

     

ones = 3326

     

twos = 3329

通缉:

  

zeros = 4633

     

ones = 3147

     

twos = 2218

提前谢谢你:)

3 个答案:

答案 0 :(得分:1)

增加随机化的范围,并为每个结果分配更多或更少的结果,以改变偏见。

a = random.randrange(0,9998)

if 0<=a<=4632:
    zeros = zeros + 1
if 4643<=a<=7790:
    ones = ones + 1
if 7791<=a<=9998:
    twos  = twos + 1

答案 1 :(得分:0)

def get_my_rand()
  r = random.randrange(1,10000)
  if r <= 4633:
    return 0
  elif r <= 4633 + 3147:
    return 1
  else:
    return 2

答案 2 :(得分:0)

也许我不理解这个问题,但是如果你有你想要的发行版,那么你可以创建一个与该发行版匹配的列表:

N = 10
zeros = int(N * 0.4633)
ones = int(N * 0.3147)
twos = N - zeros - ones
l = [0] * zeros + [1] * ones + [2] * twos

如果您希望它看起来更“自然”,您可以随机播放列表:D

random.shuffle(l)

将为您提供一份包含您的发行版的精彩列表:

  

[1,0,0,2,1,0,1,0,2,2]