Main Content

randi

整数の一様分布の疑似乱数

説明

X = randi(imax)1imax の間の整数の疑似乱数スカラーを返します。

X = randi(imax,n) は区間 [1,imax] の離散一様分布から取り出される整数の疑似乱数が格納された nn 列の行列を返します。

X = randi(imax,sz1,...,szN) は、sz1×...×szN の配列を返します。ここで、sz1,...,szN は各次元のサイズを示します。たとえば、randi(10,3,4) は 3 行 4 列の 1 ~ 10 の間の整数の疑似乱数の配列を返します。

X = randi(imax,sz)size(X) (サイズ ベクトル sz で定義) の配列を返します。たとえば randi(10,[3 4]) は、1 ~ 10 の整数の疑似乱数からなる 3 行 4 列の配列を返します。

X = randi(___,typename) は、データ型が typename である、1imax の整数の疑似乱数からなる配列を返します。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

上記の 2 行のコードを 1 行にまとめた一般的なパターンを次に示します。

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

離散一様分布のランダムな logical 値 (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 以下のランダムな整数から成る 5 行 5 列の行列を返します。

正方行列のサイズ。整数値として指定します。

  • n0 の場合、X は空の行列です。

  • n が負の場合、0 として扱われます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

各次元のサイズ。整数値の個別の引数として指定します。

  • いずれかの次元のサイズが 0 の場合、X は空の配列です。

  • いずれかの次元のサイズが負の場合、そのサイズは 0 として扱われます。

  • 2 番目より後の次元のサイズが 1 の場合、それらの次元は randi で無視されます。たとえば randi([5,10],3,1,1,1) では 5 から 10 までの範囲のランダムな整数から成る 3 行 1 列のベクトルが生成されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

各次元のサイズ。整数値の行ベクトルとして指定します。このベクトルの各要素は対応する次元のサイズを示します。

  • いずれかの次元のサイズが 0 の場合、X は空の配列です。

  • いずれかの次元のサイズが負の場合、そのサイズは 0 として扱われます。

  • 2 番目より後の次元のサイズが 1 の場合、それらの次元は randi で無視されます。たとえば 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")

作成する配列のプロトタイプ。数値配列または logical 配列として指定します。

例: 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 で生成された数列は、randrandi および randn で使用される一様疑似乱数発生器の内部設定値によって定義されます。共有乱数発生器は、rng を使用して制御できます。

  • randi によって返される配列には、整数値の繰り返しが含まれる可能性があります。この動作は、復元抽出と呼ばれることがあります。すべての値に重複がないようにする場合は、randperm を使用します。

  • imin および imax が出力型 (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 で導入

すべて展開する