2017-11-15 7 views
2

この次のコードを使用している場合:Pythonのrandom.randrange生産するすべて

import random 
sticks = 100 
randomstep = random.randint(1, 6) 
expertmarbles = random.randrange(1, sticks, 2**randomstep) 

例えば、私は、出力これらの数字からランダムにこれをしたいと思いますので出力は、ステップを除くすべてのものを生産している:2 、4,8,16,32,64。しかし、これらの数字以外のすべてを出力します。誰もがアドバイスを提供することができます、私はここで変数を使用している理由は、スティックの量が減少するためです。

+1

実際の出力と予想される出力の例を表示できますか? – yinnonsanders

+0

実際の出力は97ですが、期待されるものはこのリストからランダムなものになります:2,4,8,16,32,64。 – czedarts

+2

これに 'step'を使うことはできません。ジオメトリ(2,4,8,16 ...)ではなく、算術進行(1,3,5,7 ...)のみを実行できます。 – glibdud

答えて

3

代わりrandom.randrangeを使用してのあなたはrandom.choicedocs)を使用することができます

import random 
min_power = 1 
max_power = 6 
print(random.choice([2**i for i in range(min_power, max_power + 1)])) 
2

は、あなたが生成するために、あなたを必要とする、私はあなたをお勧めし

def myRand(pow_min,pow_max): 
    return 2**random.randint(pow_min,pow_max) 

これは代わりにrandom.choiceのこれを使用しようとすることができますリストは不要です。