Q:あなたは午前9時から午後9時までのランダムな分の(範囲は、文脈から与えられた)60日のリストを取得したいわけですか?
A: はい、はいとしましょう。実際、1日3回ランダムにしたい。
#!/usr/bin/env python
import random
import time
HOUR = 3600
DAY = 24 * HOUR
def random_times(ndays=60, n_per_day=3):
midnight = (int(time.time()) // DAY) * DAY
start = midnight + 9 * HOUR # 9am in UTC
end = start + ndays * DAY
while start < end:
yield sorted(random.sample(range(start, start + 12 * HOUR), n_per_day))
start += DAY
それは "エポック時間形式" で時間を作り出します。現在の時刻よりも早いランダムな時刻を生成することがあります。それが望ましくない場合は、別の式を使用して非常に最初の日のためのランダムな時間を計算することができます:それは最初の日にあまり利用できる時間があってもn_per_day
ランダムな時間を生成しようとし
available_times = range(max(int(time.time()), start), start + 12 * HOUR)
yield sorted(random.sample(available_times, min(n_per_day, len(available_times)))
。
あなたはstart
が異なって計算されなければならないよりも、ローカルタイムゾーンで午後9時まで午前9時間の時間が必要な場合:
start = time.mktime(time.localtime()[:3] + (9, 0, 0) + (-1,)*3)
残りは午後9時まで午前9時との間にはDSTの移行(合理的な仮定がないと仮定するとまったく同じです)または欠落した日(それはまれに起こる)、現地の時間帯の次の60日間で
出典
2016-06-19 01:13:49
jfs
午前9時から午後9時までのランダムな分の60日(範囲は文脈から与えられる)のリストを取得することを意味しますか? – spacegoing
そう、はい。実際、1日3回ランダムにしたい。 – mchfrnc