Pythonで0から9(両端を含む)の間のランダムな整数を生成するにはどうすればいいですか?
例えば、0
、1
、2
、3
、4
、5
、6
、7
、8
、9
です。
試してください:
from random import randint
print(randint(0, 9))
より多くの情報: https://docs.python.org/3/library/random.html#random.randint
import random
print(random.randint(0,9))
random.randint(a, b)
A <= N <= bとなるようなランダムな整数Nを返します。
ドキュメント: https://docs.python.org/3.1/library/random.html#random.randint
これを試して:
from random import randrange, uniform
# randrange gives you an integral value
irand = randrange(0, 10)
# uniform gives you a floating-point value
frand = uniform(0, 10)
from random import randint
x = [randint(0, 9) for p in range(0, 10)]
これにより、0から9までの範囲の10個の疑似乱数整数が生成されます。
random.shuffle
を通してこれを試してください
>>> import random
>>> nums = [x for x in range(10)]
>>> random.shuffle(nums)
>>> nums
[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]
配列のサイズを選択します(この例では、サイズを20にしました)。そして、以下を使用してください。
import numpy as np
np.random.randint(10, size=(1, 20))
次の形式の出力が表示されます( 実行するたびに異なるランダム整数が返されます。したがって、出力配列の整数は次の例とは異なることが予想されます )。
array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
連続番号の場合は randint
または randrange
がおそらく最善の選択ですが、シーケンスに複数の異なる値がある場合(つまりlist
)、 choice
を使用することもできます。
>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5
choice
は、非連続サンプルの1つの項目に対しても機能します。
>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7
あなたがそれを「暗号学的に強力」にする必要があるならば、Python 3.6以降では secrets.choice
もあります:
>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
あなたがnumpyを使いたいならば、以下を使ってください:
import numpy as np
print(np.random.randint(0,10))
最初の質問はmultiple random integerを生成することを意味しています。
Pythonで0から9までの整数を生成するにはどうすればいいですか?
しかしながら、多くの回答はone乱数を取得する方法を示しているだけです。 random.randint
とrandom.choice
。
複数のランダム整数
明確にするために、これらのテクニックを使用して、単にN
回繰り返して複数の乱数を生成することもできます。
import random
N = 5
[random.randint(0, 9) for _ in range(N)]
# [9, 7, 0, 7, 3]
[random.choice(range(10)) for _ in range(N)]
# [8, 3, 6, 8, 7]
ランダム整数のサンプル
いくつかの投稿ではmultiple random integerをネイティブに生成する方法を示しています。1 ここに暗黙の質問に対処するいくつかのオプションがあります:
random.sample
は、母集団からk
個の固有の選択を(置き換えなしで)返します。2
random.sample(range(10), k=N)
# [4, 5, 1, 2, 3]
Python 3.6では、 random.choices
は母集団からのk
の選択を(置換して)返します。
random.choices(range(10), k=N)
# [3, 2, 0, 8, 2]
この関連記事 using numpy.random.choice
も参照してください。
1すなわち、@ John Lawrence Aspden、@ S T Mohammed、@ SiddTheKid、@ user14372、@ zangwなど。
2@prashanthはこのモジュールが一つの整数を表すことに言及しています。
>>> import random
>>> random.randrange(10)
3
>>> random.randrange(10)
1
10個のサンプルのリストを取得するには
>>> [random.randrange(10) for x in range(10)]
[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]
random.sample
も使えるものです
import random
n = 1 # specify the no. of numbers
num = random.sample(range(10), n)
num[0] # is the required number
0から9までのランダムな整数を生成します。
import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)
出力:
[4 8 0 4 9 6 9 9 0 7]
最良の方法はimport Random関数を使うことです
import random
print(random.sample(range(10), 10))
またはライブラリのインポートなしで:
n={}
for i in range(10):
n[i]=i
for p in range(10):
print(n.popitem()[1])
ここで popitems は辞書n
から任意の値を削除して返します。
これを試して、
import numpy as np
X = np.random.randint(0, 99, size=1000) # 1k random integer
これを試すことができます:
import numpy as np
print ( np.random.uniform(low=0, high=10, size=(15,)) ).astype(int)
>>> [8 3 6 9 1 0 3 6 3 3 1 2 4 0 4]
注:
1. np≠uniform 半開区間[low、high)に渡って一様に分布した数を生成する.
2. astype(int) numpy配列をintデータ型にキャストします。
3.> size =(15、)を選択しました。これはあなたに長さ= 15のでこぼこの配列を与えるでしょう。
numpy.random.uniform に関する詳細情報
numpy.ndarray.astype に関する詳細情報
これはより数学的なアプローチですが、100%有効です。
a
とb
の間の数を生成するためにrandom.random()
関数を使いたいとしましょう。これを実現するには、次のようにします。
num = (b-a)*random.random() + a;
もちろん、もっと多くの数を生成することができます。
あなたが与えた例(0と9の間のランダムな整数)のために、最もきれいな解決策は以下の通りです:
from random import randrange
randrange(10)
範囲を制御するために変数を使用しました
from random import randint
numberStartRange = 1
numberEndRange = 9
randomNumber = randint(numberStartRange, numberEndRange)
print(randomNumber)
結果を見るためにprint関数を使いました。あなたがこれを必要としないならば、あなたはコメントアウトすることができます。
random モジュールのドキュメントページから:
警告:このモジュールの疑似乱数生成器はセキュリティ目的には使用すべきではありません。暗号的に安全な疑似乱数ジェネレータが必要な場合は、os.urandom()またはSystemRandomを使用してください。
random.SystemRandom (Python 2.4で導入された)は 暗号学的に安全であると考えられています これは、執筆時点で最新のPython 3.7.1でもまだ利用可能です。
>>> import string
>>> string.digits
'0123456789'
>>> import random
>>> random.SystemRandom().choice(string.digits)
'8'
>>> random.SystemRandom().choice(string.digits)
'1'
>>> random.SystemRandom().choice(string.digits)
'8'
>>> random.SystemRandom().choice(string.digits)
'5'
string.digits
の代わりに、range
を他のいくつかの答えと一緒に使用することもできます。あなたの必要性に従って混ぜて、合わせてください。