etc./StackOverFlow

0과 9 사이의 임의의 정수 생성

청렴결백한 만능 재주꾼 2022. 1. 25. 11:40
반응형

질문자 :aneuryzm


Python에서 0에서 9(포함) 사이의 임의의 정수를 생성하려면 어떻게 해야 합니까?

예를 들어, 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9



노력하다:

 from random import randrange print(randrange(10))

문서: https://docs.python.org/3/library/random.html#random.randrange


kovshenin

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

 random.randint(a, b)

<= N <= b가 되도록 임의의 정수 N을 반환합니다.

문서: https://docs.python.org/3.1/library/random.html#random.randint


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)

Andrew Hare

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

이것은 0에서 9까지의 범위에서 10개의 의사 난수 정수를 생성합니다.


user14372

secrets 모듈은 Python 3.6의 새로운 기능입니다. 이것은 암호화 또는 보안 용도로 random 모듈보다 낫습니다.

포함 범위 0-9의 정수를 무작위로 인쇄하려면:

 from secrets import randbelow print(randbelow(10))

자세한 내용은 PEP 506을 참조하십시오.


Chris_Rands

다음 중 하나를 시도합니다.

1.> numpy.random.randint

 import numpy as np X1 = np.random.randint(low=0, high=10, size=(15,)) print (X1) >>> array([3, 0, 9, 0, 5, 7, 6, 9, 6, 7, 9, 6, 6, 9, 8])

2.> numpy.random.uniform

 import numpy as np X2 = np.random.uniform(low=0, high=10, size=(15,)).astype(int) print (X2) >>> array([8, 3, 6, 9, 1, 0, 3, 6, 3, 3, 1, 2, 4, 0, 4])

3.> numpy.random.choice

 import numpy as np X3 = np.random.choice(a=10, size=15 ) print (X3) >>> array([1, 4, 0, 2, 5, 2, 7, 5, 0, 0, 8, 4, 4, 0, 9])

4.> random.randrange

 from random import randrange X4 = [randrange(10) for i in range(15)] print (X4) >>> [2, 1, 4, 1, 2, 8, 8, 6, 4, 1, 0, 5, 8, 3, 5]

5.> random.randint

 from random import randint X5 = [randint(0, 9) for i in range(0, 15)] print (X5) >>> [6, 2, 6, 9, 5, 3, 2, 3, 3, 4, 4, 7, 4, 9, 6]

속도:

np.random.uniform 및 np.random.randint 는 np.random.choice, random.randrange, random.randint 보다 훨씬 빠릅니다 (~10배 빠름).

 %timeit np.random.randint(low=0, high=10, size=(15,)) >> 1.64 µs ± 7.83 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit np.random.uniform(low=0, high=10, size=(15,)).astype(int) >> 2.15 µs ± 38.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) %timeit np.random.choice(a=10, size=15 ) >> 21 µs ± 629 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) %timeit [randrange(10) for i in range(15)] >> 12.9 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) %timeit [randint(0, 9) for i in range(0, 15)] >> 20 µs ± 386 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

노트:

1.> np.random.randint 는 반개방 간격[낮음, 높음) 동안 임의의 정수를 생성합니다.

2.> np.random.uniform 은 반개방 간격[낮음, 높음]에 걸쳐 균일하게 분포된 숫자를 생성합니다.

3.> np.random.choice a 가 np.arange(n)인 것처럼 반개방 간격[낮음, 높음)에 걸쳐 무작위 샘플을 생성합니다.

4.> random.randrange(stop) 범위(start, stop, step)에서 난수를 생성합니다.

5.> random.randint(a, b) 는 a <= N <= b가 되는 임의의 정수 N을 반환합니다.

6.> astype(int) numpy 배열을 int 데이터 유형으로 캐스트합니다.

7.> 사이즈 = (15,)를 선택했습니다. 이것은 길이 = 15의 numpy 배열을 제공합니다.


Siddharth Satpathy

배열의 크기를 선택합니다(이 예에서는 크기를 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]])

Commoner

많은 게시물이 하나의 임의의 정수를 얻는 방법을 보여주지만 원래 질문은 임의의 정수 s (복수형)를 생성하는 방법을 묻습니다.

Python에서 0에서 9(포함) 사이의 임의의 정수를 생성하려면 어떻게 해야 합니까?

명확성을 위해 여기에서는 여러 임의의 정수를 얻는 방법을 보여줍니다.

주어진

 >>> import random lo = 0 hi = 10 size = 5

암호

다중, 임의의 정수

 # A >>> [lo + int(random.random() * (hi - lo)) for _ in range(size)] [5, 6, 1, 3, 0]

 # B >>> [random.randint(lo, hi) for _ in range(size)] [9, 7, 0, 7, 3]

 # C >>> [random.randrange(lo, hi) for _ in range(size)] [8, 3, 6, 8, 7]

 # D >>> lst = list(range(lo, hi)) >>> random.shuffle(lst) >>> [lst[i] for i in range(size)] [6, 8, 2, 5, 1]

 # E >>> [random.choice(range(lo, hi)) for _ in range(size)] [2, 1, 6, 9, 5]

임의의 정수 샘플

 # F >>> random.choices(range(lo, hi), k=size) [3, 2, 0, 8, 2]

 # G >>> random.sample(range(lo, hi), k=size) [4, 5, 1, 2, 3]

세부

일부 게시물은 기본적으로 여러 임의의 정수를 생성하는 방법을 보여줍니다. 1 다음은 내포된 질문을 해결하는 몇 가지 옵션입니다.

  • A : random.random [0.0, 1.0) 범위에서 임의의 부동 소수점을 반환합니다.
  • B : random.randint a <= N <= b 되도록 임의의 정수 N
  • C : randint(a, b+1) random.randrange 별칭
  • D : random.shuffle 은 시퀀스를 제자리에서 섞습니다.
  • E : random.choice 는 비어 있지 않은 시퀀스에서 임의의 요소를 반환합니다.
  • F : random.choices k 선택 항목을 반환합니다(교체 포함, Python 3.6+).
  • G : random.sample k 고유한 선택 항목을 반환합니다 (대체 없이): 2

random 모듈의 예제를 사용하여 Chunking 및 Aliasing에 대한 R. Hettinger의 이야기도 참조하십시오.

다음은 표준 라이브러리와 Numpy의 일부 임의 함수를 비교한 것입니다.

 | | random | numpy.random | |-|-----------------------|----------------------------------| |A| random() | random() | |B| randint(low, high) | randint(low, high) | |C| randrange(low, high) | randint(low, high) | |D| shuffle(seq) | shuffle(seq) | |E| choice(seq) | choice(seq) | |F| choices(seq, k) | choice(seq, size) | |G| sample(seq, k) | choice(seq, size, replace=False) |

Numpy의 많은 분포 중 하나를 임의의 정수 샘플로 빠르게 변환할 수도 있습니다.

 >>> np.random.normal(loc=5, scale=10, size=size).astype(int) array([17, 10, 3, 1, 16]) >>> np.random.poisson(lam=1, size=size).astype(int) array([1, 3, 0, 2, 0]) >>> np.random.lognormal(mean=0.0, sigma=1.0, size=size).astype(int) array([1, 3, 1, 5, 1])

1 즉, @John Lawrence Aspden, @ST Mohammed, @SiddTheKid, @user14372, @zangw, et al. 2 @prashanth는 하나의 정수를 보여주는 이 모듈을 언급합니다. 3 @Siddharth Satpathy가 시연


pylang

random.shuffle 통해 이것을 시도하십시오.

 >>> import random >>> nums = range(10) >>> random.shuffle(nums) >>> nums [6, 3, 5, 4, 0, 1, 2, 9, 8, 7]

zangw

연속 숫자의 randint randrange 또는 randrange가 가장 좋은 선택일 수 있지만 시퀀스(예: list choice 을 사용할 수도 있습니다.

 >>> import random >>> values = list(range(10)) >>> random.choice(values) 5

choice 은 비연속적인 샘플의 한 항목에 대해서도 작동합니다.

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

MSeifert

numpy를 사용하려면 다음을 사용하십시오.

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

sushmit

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

John Lawrence Aspden

0에서 9 사이의 임의의 정수를 생성합니다.

 import numpy X = numpy.random.randint(0, 10, size=10) print(X)

산출:

 [4 8 0 4 9 6 9 9 0 7]

Ashok Kumar Jayaraman

표준 라이브러리의 일부인 random python 모듈이 필요합니다. 코드를 사용...

 from random import randint num1= randint(0,9)

이렇게 하면 변수 num1 0 에서 9 포함) 사이의 임의의 숫자로 설정됩니다.


Password-Classified

가장 좋은 방법은 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 에서 임의의 값을 제거하고 반환합니다.


S T Mohammed

random.sample 은 사용할 수 있는 또 다른 것입니다.

 import random n = 1 # specify the no. of numbers num = random.sample(range(10), n) num[0] # is the required number

prashanth

이것은 수학적 접근 방식에 가깝지만 100% 작동합니다.

random.random() ab 사이의 숫자를 생성한다고 가정해 보겠습니다. 이를 달성하려면 다음을 수행하십시오.

num = (ba)*random.random() + a;

물론 더 많은 숫자를 생성할 수 있습니다.


Orestis Zekai

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 는 이해력과 함께 다른 답변에 따라 사용될 수 있습니다. 필요에 따라 믹스 앤 매치하십시오.


rriehle

ANU의 양자 번호 생성기를 사용하는 quantumrand 를 사용하여 이러한 답변에 추가할 것이라고 생각했습니다. 불행히도 이것은 인터넷 연결이 필요하지만 숫자가 "얼마나 무작위인지"에 관심이 있다면 이것이 유용할 수 있습니다.

https://pypi.org/project/quantumrand/

예시

 import quantumrand number = quantumrand.randint(0, 9) print(number)

출력: 4

문서에는 주사위 굴림과 목록 선택기를 포함하여 다양한 예가 있습니다.


Dev4Hire

Python에서 random 모듈을 가져온 다음 9개의 숫자 중에서 선택하도록 할 수 있습니다. 정말 기본입니다.

 import random numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

나중에 사용하려는 경우 컴퓨터에서 선택한 값을 변수에 넣을 수 있지만 그렇지 않은 경우 인쇄 기능은 다음과 같이 작동해야 합니다.

 choice = random.choice(numbers) print(choice)

DrosnickX

나는 Python 3.6에서 이것으로 더 나은 운을 가졌습니다.

 str_Key = "" str_RandomKey = "" for int_I in range(128): str_Key = random.choice('0123456789') str_RandomKey = str_RandomKey + str_Key

'ABCD' 및 'abcd' 또는 '^!~=-><'와 같은 문자를 추가하여 가져올 문자 풀을 변경하고 범위를 변경하여 생성된 문자 수를 변경하십시오.


M T Head

OpenTURNS를 사용하면 임의의 정수를 시뮬레이션할 수 있을 뿐만 아니라 UserDefined 정의 클래스와 관련된 분포를 정의할 수 있습니다.

다음은 분포의 12가지 결과를 시뮬레이션합니다.

 import openturns as ot points = [[i] for i in range(10)] distribution = ot.UserDefined(points) # By default, with equal weights. for i in range(12): x = distribution.getRealization() print(i,x)

다음을 인쇄합니다.

 0 [8] 1 [7] 2 [4] 3 [7] 4 [3] 5 [3] 6 [2] 7 [9] 8 [0] 9 [5] 10 [9] 11 [6]

x 가 1차원 Point 이기 때문에 괄호가 있습니다. getSample 에 대한 단일 호출로 12개의 결과를 생성하는 것이 더 쉬울 것입니다.

 sample = distribution.getSample(12)

다음을 생성할 것입니다:

 >>> print(sample) [ v0 ] 0 : [ 3 ] 1 : [ 9 ] 2 : [ 6 ] 3 : [ 3 ] 4 : [ 2 ] 5 : [ 6 ] 6 : [ 9 ] 7 : [ 5 ] 8 : [ 9 ] 9 : [ 5 ] 10 : [ 3 ] 11 : [ 2 ]

이 주제에 대한 자세한 내용은 다음을 참조하십시오. http://openturns.github.io/openturns/master/user_manual/_generated/openturns.UserDefined.html


Michael Baudin

출처 : http:www.stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9

반응형