web-dev-qa-db-ja.com

と9の間のランダムな整数を生成する

Pythonで0から9(両端を含む)の間のランダムな整数を生成するにはどうすればいいですか?

例えば、0123456789です。

1119
aneuryzm

試してください:

from random import randint
print(randint(0, 9))

より多くの情報: https://docs.python.org/3/library/random.html#random.randint

1785
kovshenin
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

316
JMSamudio

これを試して:

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)
104
Andrew Hare
from random import randint

x = [randint(0, 9) for p in range(0, 10)]

これにより、0から9までの範囲の10個の疑似乱数整数が生成されます。

63
user14372

secrets モジュールはPython 3.6で新しく追加されました。これは暗号化やセキュリティのために random モジュールより優れています。

0から9の範囲の整数をランダムに印刷するには、次のようにします。

from secrets import randbelow
print(randbelow(10))

詳細については、 PEP 506 を参照してください。

45
Chris_Rands

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]
25
zangw

配列のサイズを選択します(この例では、サイズを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]])
20
Commoner

連続番号の場合は 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
16
MSeifert

あなたがnumpyを使いたいならば、以下を使ってください:

import numpy as np
print(np.random.randint(0,10))
11
sushmit

最初の質問はmultiple random integerを生成することを意味しています。

Pythonで0から9までの整数を生成するにはどうすればいいですか?

しかしながら、多くの回答はone乱数を取得する方法を示しているだけです。 random.randintrandom.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はこのモジュールが一つの整数を表すことに言及しています。

10
pylang
>>> 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
6
prashanth

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から任意の値を削除して返します。

5
S T Mohammed

これを試して、

import numpy as np

X = np.random.randint(0, 99, size=1000) # 1k random integer
4

これを試すことができます:

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 に関する詳細情報

4

これはより数学的なアプローチですが、100%有効です。

abの間の数を生成するためにrandom.random()関数を使いたいとしましょう。これを実現するには、次のようにします。

num = (b-a)*random.random() + a;

もちろん、もっと多くの数を生成することができます。

3
Orestis Zekai

あなたが与えた例(0と9の間のランダムな整数)のために、最もきれいな解決策は以下の通りです:

from random import randrange

randrange(10)
3
Utku

範囲を制御するために変数を使用しました

from random import randint 
numberStartRange = 1
numberEndRange = 9
randomNumber = randint(numberStartRange, numberEndRange)
print(randomNumber)

結果を見るためにprint関数を使いました。あなたがこれを必要としないならば、あなたはコメントアウトすることができます。

2

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を他のいくつかの答えと一緒に使用することもできます。あなたの必要性に従って混ぜて、合わせてください。

1
rriehle