このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
rand
一様分布の乱数
構文
説明
X = rand
は、区間 (0,1) の一様分布から取り出された乱数スカラーを返します。
X = rand(
は、sz1,...,szN
)sz1
×...×szN
の乱数の配列を返します。sz1,...,szN
はそれぞれの次元のサイズを示します。たとえば、rand(3,4)
は 3 行 4 列の行列を返します。
X = rand(___,
は、データ型が typename
)typename
の乱数の配列を返します。typename
の入力値は "single"
または "double"
です。前述の構文の入力引数のいずれかを使用できます。
X = rand(
は、既定のグローバル ストリームの代わりに、乱数ストリーム s
,___)s
から数値を生成します。ストリームを作成するには、RandStream
を使用します。s
の後に、前述の構文にある任意の入力引数の組み合わせを指定できます。
例
乱数の行列
0 から 1 までの範囲の一様分布した乱数から成る 5 行 5 列の行列を生成します。
r = rand(5)
r = 5×5
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
指定した区間の乱数
区間 (-5,5) の一様分布した数値から成る 10 行 1 列のベクトルを生成します。
r = -5 + (5+5)*rand(10,1)
r = 10×1
3.1472
4.0579
-3.7301
4.1338
1.3236
-4.0246
-2.2150
0.4688
4.5751
4.6489
一般に、区間 (a,b) の N
個の乱数は、式 r = a + (b-a).*rand(N,1)
を使って生成できます。
ランダムな整数
関数 randi
(rand
ではなく) を使用して、10 から 50 までの範囲の一様分布した 5 つのランダムな整数を生成します。
r = randi([10 50],1,5)
r = 1×5
43 47 15 47 35
乱数発生器のリセット
乱数発生器の現在の状態を保存し、1 行 5 列の乱数のベクトルを作成します。
s = rng; r = rand(1,5)
r = 1×5
0.8147 0.9058 0.1270 0.9134 0.6324
乱数発生器を s
の状態に戻し、1 行 5 列の乱数のベクトルを新たに作成します。前と同じ値が得られます。
rng(s); r1 = rand(1,5)
r1 = 1×5
0.8147 0.9058 0.1270 0.9134 0.6324
乱数の 3 次元配列
3×2×3 の乱数の配列を作成します。
X = rand([3,2,3])
X = X(:,:,1) = 0.8147 0.9134 0.9058 0.6324 0.1270 0.0975 X(:,:,2) = 0.2785 0.9649 0.5469 0.1576 0.9575 0.9706 X(:,:,3) = 0.9572 0.1419 0.4854 0.4218 0.8003 0.9157
乱数のデータ型の指定
単精度の乱数から成る 1 行 4 列のベクトルを作成します。
r = rand(1,4,"single")
r = 1x4 single row vector
0.8147 0.9058 0.1270 0.9134
class(r)
ans = 'single'
既存の配列によるサイズの定義
一様分布した乱数の行列を既存の配列と同じサイズで作成します。
A = [3 2; -2 1]; sz = size(A); X = rand(sz)
X = 2×2
0.8147 0.1270
0.9058 0.9134
上記の 2 行のコードを 1 行にまとめた一般的なパターンを次に示します。
X = rand(size(A));
既存の配列で定義されるサイズとデータ型
単精度の乱数からなる 2 行 2 列の行列を作成します。
p = single([3 2; -2 1]);
p
とサイズおよびデータ型が同じである乱数の配列を作成します。
X = rand(size(p),"like",p)
X = 2x2 single matrix
0.8147 0.1270
0.9058 0.9134
class(X)
ans = 'single'
ランダムな複素数
区間 (0,1) 内に実数部と虚数部をもつ正方形領域での一様分布から、ランダムな複素数を 10 個生成します。
a = rand(10,1,"like",1i)
a = 10×1 complex
0.8147 + 0.9058i
0.1270 + 0.9134i
0.6324 + 0.0975i
0.2785 + 0.5469i
0.9575 + 0.9649i
0.1576 + 0.9706i
0.9572 + 0.4854i
0.8003 + 0.1419i
0.4218 + 0.9157i
0.7922 + 0.9595i
入力引数
n
— 正方行列のサイズ
整数値
正方行列のサイズ。整数値として指定します。
n
が0
の場合、X
は空の行列です。n
が負の場合、0
として扱われます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
sz1,...,szN
— 各次元のサイズ (個別の引数として指定)
整数値
各次元のサイズ。整数値の個別の引数として指定します。
いずれかの次元のサイズが
0
の場合、X
は空の配列です。いずれかの次元のサイズが負の場合、そのサイズは
0
として扱われます。2 番目より後の次元のサイズが 1 の場合、それらの次元は
rand
で無視されます。たとえばrand(3,1,1,1)
では 3 行 1 列の乱数のベクトルが生成されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
sz
— 各次元のサイズ (行ベクトルとして指定)
整数値
各次元のサイズ。整数値の行ベクトルとして指定します。このベクトルの各要素は対応する次元のサイズを示します。
いずれかの次元のサイズが
0
の場合、X
は空の配列です。いずれかの次元のサイズが負の場合、そのサイズは
0
として扱われます。2 番目より後の次元のサイズが 1 の場合、それらの次元は
rand
で無視されます。たとえば、rand([3 1 1 1])
では 3 行 1 列の乱数のベクトルが生成されます。
例: sz = [2 3 4]
は、2×3×4 の配列を作成します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
typename
— 作成するデータ型 (クラス)
"double"
(既定値) | "single"
作成するデータ型 (クラス)。"double"
または "single"
として指定するか、rand
をサポートする別のクラスの名前を指定します。
例: rand(5,"single")
p
— 作成する配列のプロトタイプ
数値配列
作成する配列のプロトタイプ。数値配列として指定します。
例: rand(5,"like",p)
データ型: single
| double
複素数のサポート: あり
s
— 乱数ストリーム
RandStream
オブジェクト
乱数ストリーム。RandStream
オブジェクトとして指定します。
例: s = RandStream("dsfmt19937"); rand(s,[3 1])
ヒント
rand
で生成された数列はrand
、randi
およびrandn
で使用される一様疑似乱数発生器の内部設定値によって定義されます。共有乱数発生器は、rng
を使用して制御できます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
データ型 (クラス) は組み込みの MATLAB® 数値型でなければなりません。その他のクラスでは、静的
rand
メソッドは呼び出されません。たとえば、rand(sz,'myclass')
はmyclass.rand(sz)
を呼び出しません。サイズの引数は固定サイズでなければなりません。
ツールボックス関数のコード生成に対する可変サイズの制限 (MATLAB Coder)を参照してください。
外部呼び出しが有効であり
rand
がparfor
ループ内部で呼び出されていない場合、生成された MEX ファイルは MATLAB と同じ乱数状態を逐次処理コードで使用します。それ以外の場合、生成された MEX コードとスタンドアロン コードは、MATLAB と同じ状態に初期化される独自の乱数状態を維持します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
ストリーム構文
rand(
は GPU ではサポートされません。s
,___)typename
を'gpuArray'
として指定できます。typename
を'gpuArray'
として指定する場合、配列の基となる型は既定ではdouble
になります。基となる型が
datatype
の GPU 配列を作成するには、typename
の前に追加の引数として基となる型を指定します。たとえば、X = rand(3,datatype,'gpuArray')
は、基となる型がdatatype
の乱数から成る 3 行 3 列の GPU 配列を作成します。基となる型
datatype
は次のオプションのいずれかとして指定できます。'double'
'single'
数値変数
p
についても、gpuArray
として指定できます。p
をgpuArray
として指定する場合、返される配列の基となる型はp
と同じになります。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
ストリーム構文
rand(
はs
,___)codistributed
またはdistributed
の配列ではサポートされません。typename
を'codistributed'
または'distributed'
として指定できます。typename
を'codistributed'
または'distributed'
として指定する場合、返される配列の基となる型は既定ではdouble
になります。基となる型が
datatype
の分散配列または対話型分散配列を作成するには、typename
の前に追加の引数として基となる型を指定します。たとえば、X = rand(3,datatype,'distributed')
は、基となる型がdatatype
の乱数から成る 3 行 3 列の分散行列を作成します。基となる型
datatype
は次のオプションのいずれかとして指定できます。'double'
'single'
p
についても、codistributed
またはdistributed
の配列として指定できます。p
をcodistributed
またはdistributed
の配列として指定する場合、返される配列の基となる型はp
と同じになります。codistributed
の追加の構文の詳細については、rand (codistributed)
(Parallel Computing Toolbox) を参照してください。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2022a: "like"
による実数/複素数の一致と、RandStream
オブジェクトを指定した "like"
の使用
"like"
入力は、実数と複素数の両方のプロトタイプ配列をサポートします。以下に例を示します。
r = rand(2,2,"like",1i)
r = 0.8147 + 0.9058i 0.6324 + 0.0975i 0.1270 + 0.9134i 0.2785 + 0.5469i
この機能はすべての構文でサポートされています。また、RandStream
オブジェクトを rand
の最初の入力として、"like"
を使用することもできます。
R2014a: 'like'
を使って既存の変数のデータ型と一致させる
既存の変数と同じデータ型で乱数を生成するには、構文 rand(__,'like',p)
を使用します。以下に例を示します。
A = single(pi); r = rand(4,4,'like',A); class(r)
ans = single
RandStream
オブジェクトを最初の入力として rand
に渡す場合、この機能は使用できません。R2013b: 非整数のサイズ入力はサポートなし
整数ではない次元を指定するとエラーが発生します。floor
を使用して、非整数のサイズ入力を整数に変換してください。
R2008b: 'seed'
、'state'
、'twister'
の入力は非推奨
これらの入力は rand
、randi
、randn
で使用される乱数発生器を制御するもので、削除の予定はありません。しかし以下の理由で、代わりに関数 rng
が推奨されます。
'seed'
および'state'
発生器には不具合がある。'seed'
および'state'
という用語は発生器についての誤解を招く。'seed'
は、シードの初期化値ではなく MATLAB v4 発生器を指す。'state'
は、発生器の内部状態ではなく v5 発生器を指す。これらの 3 つの入力は
rand
とrandn
に対し、必要もなく別々の発生器を使用する。
コードの更新の詳細については、rand と randn の非推奨構文の置換を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)