Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How about this? In rare circumstances, it may loop forever.

  def uneven_random():
      # return 0 with 2/7 probability, 1 with 2/7 probability, and 2 with 3/7 probability
      n = random.random()
      if n < 2.0/7: return 0
      if n < 4.0/7: return 1
      return 2

  def transformed_random():
      # return 0 or 1 with 50% probability
      N = uneven_random()
      while N == 2 : N = uneven_random()
      return N


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: