我在发布之前做了一些研究,但似乎很丢失(在编码方面没有太多经验)。
我试图用Python生成或计算一段时间间隔的随机数。我不是在寻找完整的代码,如果要使用时间库我需要帮助。
伪码:
允许python [PC]计算一个随机数3秒
------>将计算的代数存储在值(我可以处理)
中
然后我会使用随机生成的值来链接访问python列表(它也会通过随机数生成自动生成,但我可以想出来)。
答案 0 :(得分:1)
我不确定你为什么要这样做,但是这里是如何计算许多随机数,将其中的大部分丢弃,然后在3秒后使用最后一个。
import random
import time
start = time.clock()
while time.clock() - start < 3:
random_number = random.randint(0,100)
print random_number
这毫无意义地丢弃了我机器上大约200万个完美的随机数字。
(而且,正如abarnert指出的那样,这也会在繁忙的循环中占用整个3秒的一个CPU核心,这非常非常浪费,但我认为这是你要求的?)
编辑已更新为使用time.clock而不是time.time,正如abarnert再次建议的那样(感谢),因为这似乎可以跨平台提供更好的解决方案,而不是在程序运行过程中改变系统时间时会遇到问题。
答案 1 :(得分:1)
首先,你没有说出你想要生成什么样的随机数,但鉴于你的例子是10
,我认为它是某个范围内的整数 - 假设你正在调用{{3 }}
现在,您想要每秒计算一个数字,持续3秒,然后保留最后一个。我不知道为什么你甚至想要这样做,但你可以这样做:
for i in range(3):
number = random.randrange(30)
time.sleep(1.0)
在3秒结束时,number
将是生成的第三个随机数。
这里的关键是,每秒做一次(在同步程序中 - 不要在GUI或服务器中执行此操作!) - 您只需拨打random.randrange(30)
。
如果您正在进行的操作占用了大量的一秒钟(或更长时间),那么这是不合适的。相反,你想要计算开始时间,然后睡到一秒钟之后:
t0 = time.monotonic()
for i in range(3):
number = random.randrange(30)
t0 += 1
time.sleep(t0 - time.monotonic())
请注意,我在这里使用了time.sleep
。此功能专为此类用例而设计。它返回的精度与合理效率一样高(特别是,与time.time
不同,它在某些平台上不会给你1s精度),并且它保证你永远不会倒退,即使,例如, ,您在程序中间更改系统时钟。如果您使用的是3.2或更早版本,请查看文档以获取最佳替代方案(可能使用time.clock()
),或者使用ctypes
调用相应的平台本机函数。
但是在这种情况下,random.randrange
会占用一微秒左右的时间,这比大多数系统的简单定时器的最小分辨率要少得多,因此没有理由做这样的事情
答案 2 :(得分:0)
如果你想花3秒钟得到一个随机数,因为你担心随机数的质量,你可以使用os.urandom()来生成值。如果您真正想做的就是随机选择列表中的项目,可以使用random.choice()