2017-07-31 10 views
-1

(65,90)と(97,122)の範囲の乱数を取得したいと思います。私は2つの範囲の間のランダムな整数を生成する

import random 
random.randint(65,95) 

を使用して範囲内の乱数を選択することができますが、私はどのように行うことができるように整数のみを取る'randint`?事前

+1

2つの範囲を生成した後、 'random.choice([最初の範囲の範囲と2番目の範囲の範囲]) ' – depperm

+0

' i = randint(65、115);もしi> 90ならばi = 7、それ以外は0' – Alfe

+11

本当に 'random.choice(string.ascii_letters)'の後ろにいないのですか? –

答えて

1
def random_of_ranges(*ranges): 
    all_ranges = sum(ranges, []) 
    return random.choice(all_ranges) 

print(random_of_ranges(range(65, 90), range(97, 122))) 

これは、これを扱うのは非常に一般的な方法です。任意の数の範囲(またはそれらのサブセット)を渡すことができます。しかし、特に大きなセット(例えばrange(1, 100000000)のようなもの)の方がかなり高価です。あなたのユースケース(そして近くのいくつかの他の人たち)にとってはそれでも十分でしょう。

+0

なぜここで 'all_ranges'をビルドしますか? 'random.choice(random.choice(ranges))'は毎回リストを再構築せずに同じことをします。 –

+1

すべての範囲が等しいサイズの場合(同じQの場合)は同じです。一般的な場合、これは真実である必要はなく、 'choice([range(1,100)、range(200、202)]))'はeよりも200と201の方針を返すでしょう。 g。もちろん、リストを一度作成してからこの入力ですべての呼び出しで使用すると、最適な最適化になります。 – Alfe

+0

良い点 - よく作られた:) –

-1

内の任意のアイデア

おかげで、独自のを作りますか?また

import random 

def my_rand(): 
    numbers = list() 
    numbers.append(random.randint(65,95)) 
    numbers.append(random.randint(97,122)) 
    return numbers[random.randint(0,1)] 
+0

範囲が異なるサイズの場合、それはおそらく望むものではありません。 – Alfe

+3

にコードに構文エラーがあります。 –

+0

@ Jean-FrançoisFabreは修正したのではなく、不平を言ってくれてありがとう) – Nicoretti

0

def random(): 
    arr1 = np.random.randint(65,90) 
    arr2 = np.random.randint(97,122) 
    out = np.stack((arr1,arr2)) 
    out = np.random.choice(out) 
    return out 
関連する問題