Python expected an indented block

后端 未结 2 1999
耶瑟儿~
耶瑟儿~ 2020-12-22 14:06

I am a newbie to Python and would like to genereate some numbers according to geometric distribution. i found this code on Internet but isn´t work:

  import          


        
2条回答
  •  渐次进展
    2020-12-22 14:14

    Correct syntax (indent for each block. Most of those start after lines ending in ":"):

    import random
    from math import ceil, log
    
    def geometric(p):
    
      # p should be in (0.0, 1.0].
      if ((p <= 0.0) or (p >=1.0)):
        raise ValueError("p must be in the interval (0.0, 1.0]")
      elif p == 1.0:
        # If p is exactly 1.0, then the only possible generated value is 1.
        # Recognizing this case early means that we can avoid a log(0.0) later.
        # The exact floating point comparison should be fine. log(eps) works just
        # dandy.
        return 1
    
      # random() returns a number in [0, 1). The log() function does not
      # like 0.
      U = 1.0 - random.random()
    
      # Find the corresponding geometric variate by inverting the uniform variate.
      G = int(ceil(log(U) / log(1.0 - p)))
      return G
    
    p=1.0/2.0
    for i in range(10):
      print geometric(p)
    

提交回复
热议问题