Main Content

randi

균일하게 분포된 정수형 의사 난수

설명

X = randi(imax)1imax 사이의 정수형 의사 난수 스칼라를 반환합니다.

예제

X = randi(imax,n)은 구간 [1,imax]의 이산 균등분포에서 추출한 정수형 의사 난수로 구성된 n×n 행렬을 반환합니다.

X = randi(imax,sz1,...,szN)sz1×...×szN 배열을 반환합니다. 여기서 sz1,...,szN은 각 차원의 크기를 나타냅니다. 예를 들어, randi(10,3,4)는 1과 10 사이의 정수형 의사 난수로 구성된 3×4 배열을 반환합니다.

예제

X = randi(imax,sz)는 배열을 반환합니다. 여기서 크기 벡터 szsize(X)를 정의합니다. 예를 들어, randi(10,[3 4])는 1과 10 사이의 정수형 의사 난수로 구성된 3×4 배열을 반환합니다.

예제

X = randi(___,typename)1과 데이터형이 typenameimax 사이의 정수형 의사 난수로 구성된 배열을 반환합니다. typename 입력값은 "single", "double", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical" 중 하나가 될 수 있습니다. 위에 열거된 구문의 모든 입력 인수와 사용할 수 있습니다.

예제

X = randi(___,"like",p)p와 유사한, 즉 데이터형, 실수/복소수 여부가 p와 동일한 정수형 의사 난수로 구성된 배열을 반환합니다. typename이나 "like" 중 하나를 지정할 수 있으나, 둘 다 지정할 수는 없습니다.

예제

X = randi([imin,imax],___)는 구간 [imin,imax]의 이산 균등분포에서 추출된 정수가 포함된 배열을 반환합니다. 위에 열거된 구문에 사용할 수 있습니다.

X = randi(s,___)는 디폴트 전역 스트림 대신 난수 스트림 s에서 정수를 생성합니다. 스트림을 만들려면 RandStream 함수를 사용하십시오. s를 지정하고 뒤이어 위에 열거된 구문에 나와 있는 입력 인수 조합을 지정할 수 있습니다.

예제

모두 축소

1과 10 사이의 정수형 난수로 구성된 5×5 행렬을 생성합니다. randi에 대한 첫 번째 입력값은 샘플링 구간 내의 최대 정수를 나타냅니다(구간 내의 최소 정수는 1).

r = randi(10,5)
r = 5×5

     9     1     2     2     7
    10     3    10     5     1
     2     6    10    10     9
    10    10     5     8    10
     7    10     9    10     7

샘플링 구간 [-5,5]에서 균등하게 분포된 정수형 난수로 구성된 10×1 열 벡터를 생성합니다.

r = randi([-5,5],10,1)
r = 10×1

     3
     4
    -4
     5
     1
    -4
    -2
     1
     5
     5

난수 생성기의 현재 상태를 저장하고 정수형 난수로 구성된 1×5 벡터를 생성합니다.

s = rng;
r = randi(10,1,5)
r = 1×5

     9    10     2    10     7

난수 생성기의 상태를 s로 복원한 다음, 정수형 난수로 구성된 1×5 벡터를 새로 생성합니다. 값은 이전과 동일합니다.

rng(s);
r1 = randi(10,1,5)
r1 = 1×5

     9    10     2    10     7

1과 500 사이에서 균등하게 분포된 정수형 난수로 구성된 3×2×3 배열을 생성합니다.

X = randi(500,[3,2,3])
X = 
X(:,:,1) =

   408   457
   453   317
    64    49


X(:,:,2) =

   140   483
   274    79
   479   486


X(:,:,3) =

   479    71
   243   211
   401   458

요소가 int16형인 1에서 100 사이의 난수로 구성된 1×4 벡터를 만듭니다.

r = randi(100,1,4,"int16")
r = 1x4 int16 row vector

   82   91   13   92

class(r)
ans = 
'int16'

기존 배열과 동일한 크기이며 1과 10 사이에서 균등하게 분포된 정수형 난수로 구성된 행렬을 생성합니다.

A = [3 2; -2 1];
sz = size(A);
X = randi(10,sz)
X = 2×2

     9     2
    10    10

앞의 두 줄의 코드는 다음과 같이 한 줄로 표현하는 것이 보통입니다.

X = randi(10,size(A));

부호 있는 8비트 정수로 구성된 2×2 행렬을 생성합니다.

p = int8([3 2; -2 1]);

크기 및 데이터형이 p와 같은 정수형 난수로 구성된 배열을 만듭니다.

X = randi(10,size(p),"like",p)
X = 2x2 int8 matrix

    9    2
   10   10

class(X)
ans = 
'int8'

R2022a 이후

구간 [-5,5]에 실수부와 허수부가 있는 정사각형 영역에 대한 이산 균등분포에서 복소수형 정수 난수 10개를 생성합니다.

a = randi([-5,5],10,1,"like",1i)
a = 10×1 complex

   3.0000 + 4.0000i
  -4.0000 + 5.0000i
   1.0000 - 4.0000i
  -2.0000 + 1.0000i
   5.0000 + 5.0000i
  -4.0000 + 5.0000i
   5.0000 + 0.0000i
   3.0000 - 4.0000i
  -1.0000 + 5.0000i
   3.0000 + 5.0000i

R2023a 이후

이산 균등분포를 사용하여 논리형 난수값(0과 1)으로 구성된 5×5 행렬을 만듭니다.

r = randi([0 1],5,"logical")
r = 5x5 logical array

   1   0   0   0   1
   1   0   1   0   0
   0   1   1   1   1
   1   1   0   1   1
   1   1   1   1   1

입력 인수

모두 축소

샘플 구간 내 최대 정수로, 양의 정수로 지정됩니다. randi는 샘플 구간 [1,imax]의 균등분포에서 값을 추출합니다.

예: randi(10,5)

샘플 구간 내 최소 정수로, 정수 스칼라로 지정됩니다.

iminimax 모두 iminimax를 충족하는 정수여야 합니다.

예를 들어, randi([50,100],5)는 50과 100을 포함하여 50과 100 사이의 정수형 난수로 구성된 5×5 행렬을 반환합니다.

정사각 행렬의 크기로, 정수 값으로 지정됩니다.

  • n0이면 X는 빈 행렬이 됩니다.

  • n이 음수이면 0으로 처리됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

각 차원의 크기로, 정수 값으로 구성된 개별 인수로 지정됩니다.

  • 크기가 0인 차원이 있을 경우 X는 빈 배열이 됩니다.

  • 크기가 음수인 차원이 있을 경우 0으로 처리됩니다.

  • randi는 세 번째 차원부터는 크기가 1인 차원을 무시합니다. 예를 들어, randi([5,10],3,1,1,1)은 5와 10 사이의 정수형 난수로 구성된 3×1 벡터를 생성합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

각 차원의 크기로, 정수 값으로 구성된 행 벡터로 지정됩니다. 이 벡터의 요소는 각각 해당하는 차원의 크기를 나타냅니다.

  • 크기가 0인 차원이 있을 경우 X는 빈 배열이 됩니다.

  • 크기가 음수인 차원이 있을 경우 0으로 처리됩니다.

  • randi는 세 번째 차원부터는 크기가 1인 차원을 무시합니다. 예를 들어, randi([5,10],[3 1 1 1])은 5와 10 사이의 정수형 난수로 구성된 3×1 벡터를 생성합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

생성할 데이터형(클래스)으로, "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical", 또는 randi를 지원하는 다른 클래스의 이름으로 지정됩니다.

예: randi(5,5,"int8")

생성할 배열의 프로토타입으로, 숫자형 배열 또는 논리형 배열로 지정됩니다.

예: randi(5,5,"like",p)

데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
복소수 지원 여부:

난수 스트림으로, RandStream 객체로 지정됩니다.

예: s = RandStream("dsfmt19937"); randi(s,[5,10],[3 1])

  • randi가 생성하는 수열은 rand, randi, randn의 기반이 되는 균일 의사 난수 생성기의 내부 설정에 의해 결정됩니다. rng를 사용하여 이 공유 난수 생성기를 제어할 수 있습니다.

  • randi에 의해 반환되는 배열은 반복된 정수 값을 포함할 수 있습니다. 이러한 동작을 복원 추출(Sampling With Replacement)이라 일컫기도 합니다. 모두 고유한 값이 필요하면 randperm을 사용하십시오.

  • iminimax가 출력 유형(typename 또는 프로토타입 p로 지정됨)의 범위를 벗어나는 경우 randi는 먼저 간격 [imin,imax] 내에서 정수형 난수를 만들고 그중에서 범위를 벗어난 정수를 해당 출력 유형의 최솟값 또는 최댓값으로 변환합니다. 예를 들면 다음과 같습니다.

    rng default;
    r = randi([-10 10],1,10)
    r =
    
         7     9    -8     9     3    -8    -5     1    10    10
    rng default;
    r = randi([-10 10],1,10,"logical")
    r =
    
      1×10 logical array
    
       1   1   0   1   1   0   0   1   1   1

확장 기능

버전 내역

R2008b에 개발됨

모두 확장