计算随机数

时间:2013-09-02 01:05:13

标签: python

假设我从0-9重复生成随机整数,直到给定数字出来。我需要的是一个函数,它计算在这种情况发生之前生成的整数数量。请帮帮我。

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

for i in range(1000):
  d = randint()
  if d <> 5:
     cnt = cnt + 1
  if d == 5:
     break

5 个答案:

答案 0 :(得分:10)

假设 5 是您期望的数字:

sum(1 for _ in iter(lambda: randint(0, 9), 5))

如果您想要包含最后一个号码,可以添加 1

<强>解释

  • iter(function, val)返回一个调用function的迭代器,直到 返回val
  • lambda: randint(0, 9)返回 randint(0, 9)的函数(可以调用)。
  • sum(1 for _ in iterator)计算迭代器的长度。

答案 1 :(得分:9)

一些事情:

  • 如果您希望循环继续直到停止,请使用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)

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

答案 2 :(得分:2)

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

import random, itertools

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

如果您希望计数包含生成5的迭代,只需使用itertools.count(1)

将计数开始为1

答案 3 :(得分:1)

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

答案 4 :(得分:0)

这应该有效:

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

或者,以函数形式:

from random import randint
def func():
    cnt = 0
    while True: 
        if randint(0, 9) != 5:
            cnt += 1 
        else: 
            break
    return cnt