math.random()関数を使用せずにランダムな数値を生成する方法


import time
def get_random_number():
   milliseconds = int(round(time.time() * 1000))
   random_number = (milliseconds % (max_value - min_value + 1)) + min_value
   return random_number

この方法は、プログラムが実行されるたびに異なる結果を生成しますが、同じ実行内では同じ結果が得られる可能性があります。

  • 外部ソースを使用する方法: ランダム性を持つ外部ソース(例: ランダムなウェブサイト、ノイズを発生させるハードウェアデバイスなど)からデータを取得することで、ランダムな数値を生成することもできます。この方法では、外部ソースからのデータを適切に変換して必要な範囲にスケーリングする必要があります。

    import urllib.request
    def get_random_number():
       response = urllib.request.urlopen('https://www.randomnumberapi.com/api/v1.0/random')
       random_data = response.read().decode('utf-8')
       random_number = int(random_data) % (max_value - min_value + 1) + min_value
       return random_number

    この例では、https://www.randomnumberapi.com/api/v1.0/random からランダムな数値を取得していますが、実際には他の外部ソースを使用することもできます。

  • これらの方法は、math.random()関数が使用できない環境や、より高度なランダム性が必要な場合に役立ちます。ただし、各方法には独自の利点と制約がありますので、使用する前に必ずドキュメントやリファレンスを参照してください。