Python 计算随机数

Python 计算随机数,python,Python,假设我重复生成0-9之间的随机整数,直到给出一个给定的数字。我需要的是一个函数,它计算在此之前生成多少个整数。请帮我做这个 这就是我尝试过的,我把1000放在这里是因为它足够大,但我认为它不正确,因为我的数字可能在1000次迭代之后出现 for i in range(1000): d = randint() if d <> 5: cnt = cnt + 1 if d == 5: break 范围(1000)内的i的: d=randint() 如果d

假设我重复生成0-9之间的随机整数,直到给出一个给定的数字。我需要的是一个函数,它计算在此之前生成多少个整数。请帮我做这个

这就是我尝试过的,我把1000放在这里是因为它足够大,但我认为它不正确,因为我的数字可能在1000次迭代之后出现

for i in range(1000):
  d = randint()
  if d <> 5:
     cnt = cnt + 1
  if d == 5:
     break
范围(1000)内的i的
:
d=randint()
如果d 5:
cnt=cnt+1
如果d==5:
打破
这应该可以:

from random import randint
# Make sure 'cnt' is outside the loop (otherwise it will be overwritten each iteration)
cnt = 0
# Use a while loop for continuous iteration
while True:
    # Python uses '!=' for "not equal", not '<>'
    if randint(0, 9) != 5:
        # You can use '+=' to increment a variable by an amount
        # It's a lot cleaner than 'cnt = cnt + 1'
        cnt += 1 
    else: 
        break
print cnt

假设5是您期望的数字:

sum(1 for _ in iter(lambda: randint(0, 9), 5))
如果要包含最后一个数字,可以添加1

说明

  • iter(function,val)
    返回一个迭代器,该迭代器调用
    函数
    直到 返回
    val
  • lambda:randint(0,9)
    是返回
    randint(0,9)
    的函数(可以调用)
  • sum(1表示uin迭代器)
    计算迭代器的长度
    • 有几件事:

      • 如果希望循环一直持续到停止,请使用
        while
        循环,而不是
        for
        循环
      • 你应该使用
        =
        作为不等式运算符,而不是
      以下是一些让您开始学习的内容:

      import random
      
      count = 0
      
      while True:
          n = random.randint(0, 9)
          count += 1
      
          if n == 5:
              break
      
      你也可以写:

      import random
      
      count = 1
      n = random.randint(0, 9)
      
      while n != 5:
          count += 1
          n = random.randint(0, 9)
      

      将其转换为函数留给读者作为练习。

      itertools.count
      通常比使用带有显式计数器的while循环更简洁

      import random, itertools
      
      for count in itertools.count():
          if random.randint(0, 9) == 5:
              break
      

      如果您希望计数包括生成5的迭代,只需使用
      itertools从1开始计数。计数(1)

      如果OP仍在与循环作斗争,我认为生成器表达式和匿名函数实际上不在OP的掌握范围之内。“uuu”的含义是什么?它只是一个变量,您可以根据需要重命名它。请参阅我编辑的答案。第二个答案(列表()one)不是很好,因为在遇到所需的值之前,您可能正在构建一个非常大的列表,并且它可能会占用大量内存。+1为简洁起见。但是您对randint的呼叫应该是(0,9)而不是(0,10)。Randint包括两个端点。如果假设您的答案(与OP自己的代码一样)要计算生成的随机整数的数量,则答案将被关闭一个。
      在python 3之前的版本中使用,并由解析器替换为
      =@Sp:谢谢,我从来不知道。我以为这只是针对2.6之前的版本。你可以从一个概率为0.1的样本中抽取一次,而不是模拟。
      
      import random, itertools
      
      for count in itertools.count():
          if random.randint(0, 9) == 5:
              break
      
      from random import randint
      count = 0
      while randint(0, 9) != 5:
         count += 1