ホームページ  >  記事  >  バックエンド開発  >  指定された期間内でランダムな非反復時点を取得するための Python 実装コード

指定された期間内でランダムな非反復時点を取得するための Python 実装コード

高洛峰
高洛峰オリジナル
2017-03-20 13:23:472225ブラウズ

この記事では、指定された期間内でランダムで非繰り返しの時点を取得するための Python の実装コードを紹介します

シナリオ 1: 07:30:00 ~ 09:30:33 の間で N 個のランダムな時間を取得します。

以下は私のコードです:

#2016-12-10 7:06:29 codegay
import random
st = "07:30:00"
et = "09:30:33"

def time2seconds(t):
    h,m,s = t.strip().split(":")
    return int(h) * 3600 + int(m) * 60 + int(s)

def seconds2time(sec):
    m,s = pmod(sec,60)
    h,m = pmod(m,60)
    return "%02d:%02d:%02d" % (h,m,s)

sts = time2seconds(st) #sts==27000
ets = time2seconds(et) #ets==34233

rt = random.sample(range(sts,ets),10)
#rt == [28931, 29977, 33207, 33082, 31174, 30200, 27458, 27434, 33367, 30450]

rt.sort() #对时间从小到大排序


for r in rt:
    print(seconds2time(r))

"""
输出:
07:43:12
07:54:31
08:08:33
08:27:46
08:46:53
08:48:17
08:55:20
08:59:16
09:10:23
09:15:58
"""

コードから、時間を秒に変換するというアイデアであることがわかります。次に、 range を使用して 07:30 から 09:30 までの時間の秒を生成し、次を使用します。ランダム サンプルはそこから N 秒を取得し、最終的にその秒を必要な時間形式に変換します。

シナリオ2:時間の大小比較と時間範囲の判定

>>> "09:30:00" > "9:30:00"
False
>>> "09:30:00" == "9:30:00"
False

文字列による判定は上記のような場合があると思いますが、数値化して計算した方が確実な気がします。

シナリオ 3: 秒に変換された時刻は、1970 年 1 月 1 日の

タイムスタンプ

とまったく同じです。UNIX 時間または POSIX 時間は、UNIX または UNIX 類似のシステムで使用される時刻表現です。協定世界時からのものです。 1970 2020 年 1 月 1 日の 0:00:00 からの合計秒数。

秒に変換すると、任意の 1 日の 24 時間以内の時刻は、1970 年 1 月 1 日 (協定世界時) のタイムスタンプとまったく同じになります。したがって、必要に応じて、

プログラミング言語組み込みのタイムスタンプ関数を使用して変換できます。

以上が指定された期間内でランダムな非反復時点を取得するための Python 実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。