2016-07-11 11 views
0

2つの辺の間に整数の「乱数」ジェネレータを作成したいと思います。さらに、同じことを作成したいと思いますが、2つのエッジの間に浮動小数点数(random.randomのようなものですが、必要な範囲のもの)を使用しています。時間以外のモジュールを持たない範囲の間にランダムな数値を作成する

タイムスタンプの時間が必要です。

私は現在、(私はスタートとして、タイムスタンプをこのように使用しています)乱数を生成する方法を学んでいます:

a = int 
b = int 
m = int 
number = time.mktime (time.localtime()) 

for x in range (0, m): 
    number = (a*number + c) % m 
    print (number) 

(intは任意の整数で可能返さを最適化するために複数の方法があります。値(ここで説明するには長い))

これは私が "ランダムな"整数を持つことを学んだ方法です。私は現在、この方法で(可能ならば)上記の問題を解決する方法を探しています。何か案は?

+0

int AとBの2つを使用して、A + float( "0" + str(B))を実行できます(汚れていますが、日付付きのランダムジェネレータのようです...) – Benjamin

答えて

1

数値が常にmであるとすれば、mが結果の最大値になります。また、minmaxの間の乱数を見つけることは、0とmax - minの間の乱数を見つけて、それにminを加えることと同じです。

def rand_range(min, max, a, b, n): 
    m = max - min 
    number = time.mktime (time.localtime()) 

    for x in range (0, m): 
     number = (a*number + b) % m 

    return number + min 

このうち浮動小数点数を取得するには、ユーザーが定義するために、上記の機能を使用することができます。この機能で

def rand_range_float(min, max, density, a, b, n): 
    rand_int = rand_range(0, density, a, b, n) 
    return min + (float(rand_int)/density)*(max-min) 

densityはあなたが望むどのように多くの可能な浮動小数点値を指定します。たとえば、rand_range_float(0, 1, 2, a, b, c)を呼び出すと、関数は2つの可能な値を返す可能性があります。 0.0または0.5

+0

ありがとうちょうど私が必要なもの! – Sionae

+0

2つの関数でn変数を使用するのはどうですか? – Sionae

+0

ああ、私はあなたの質問を少し誤解し、私はちょうどループのためにあなたのコードを読んだ。反復回数を定義するために変数 'n 'があ​​ると思ったが、そこに' m'を使っているだけなので、 'n'引数を省略することができます。 – bigblind

関連する問題