你如何在python中生成20个随机数

时间:2014-02-01 16:07:01

标签: python random integer

我正在尝试在python中生成20个随机数,并说它们是奇数还是偶数,这是我到目前为止所做的:

import random

def main():

    i = 0
    num = 0

    #while loop
    while i<20:

       #user enters input
        num = random.randint(input("enter lowest number:\t"))
        i = random.randint(input("enter highest number:\t"))

        #if else
        if num>=0 and num<=100:

            num = num+i

            i = i +1

            print(num)

        else:
            print("error")

        #for loop
        for i in range(num):


main()
因为我完全失去了,有人能够帮助我完成它

这是一个问题:

编写一个生成20个随机整数的程序,并指出每个数字是奇数还是偶数。该程序应首先要求用户输入两个整数,这两个整数将作为生成20个随机整数的范围。

5 个答案:

答案 0 :(得分:4)

使用list comprehension

import random
lower = int(raw_input("enter lowest number:\t"))
greater = int(raw_input("enter highest number:\t"))
print [random.randint(lower, greater) for a in range(100)]

答案 1 :(得分:3)

我宁愿完全重写该功能

import random


def main():
    lower = int(raw_input("enter lowest number: "))
    upper = int(raw_input("enter highest number: "))
    for i in range(20):
        num = random.randint(lower, upper)
        print(num)
main()

我认为您可以轻松修改它以满足您的需求:)

编辑:正如所建议的那样,我重写了这个函数,因此它不会要求for循环的每一步的上限和上限,而是在进入for循环之前只需要一次。哪个不那么烦人,也许你想做的事情。

答案 2 :(得分:2)

def odd_or_even(num):
    if num % 2 == 0:
        print(num, 'is even')
    else:
        print(num, 'is not even')

lst = [random.randint(lower, upper) for x in range(20)]
for num in lst:
    print(even_or_odd(num))

这是一个有效的工作程序,但是如果你无法解决这个问题,我怀疑你会非常喜欢这门课,因为它只会变得更加困难。

答案 3 :(得分:0)

import random
import time

start = time.time()
for i in range(10000):
    random.choice([i for i in range(1000)])
print 'random.choice()', time.time() - start

start = time.time()
for i in range(10000):
    random.randint(0,1000)
print 'random.randint()', time.time() - start

start = time.time()
for i in range(10000):
    int(random.random() * 1000)
print 'random.random()', time.time() - start

<强> [OUT]:

random.choice() 0.849874973297
random.randint() 0.015105009079
random.random() 0.00372695922852

答案 4 :(得分:0)

首先询问用户顶部和底部的数字, 然后使用生成器来获取数字。

import random

def randnums(number, startnum=0, endnum=100):
    for i in range(1, number + 1):
         yield random.randint(startnum, endnum)

def getparams():
    return int(input('Lowest number: ')), int(input('Highest number: '))

def main():
    bottom, top = getparams()
    nums = list(randnums(20, startnum=bottom, endnum=top))
    for number in nums:
        print(number, ',', sep='')
if __name__ == '__main__':
    main()