Main Content

本页采用了机器翻译。点击此处可查看英文原文。

randi

创建均匀分布的随机整数的协同分布数组

    说明

    示例

    cR = randi(r,n,codist) 创建一个 n×n 的均匀分布随机整数共分布矩阵,该矩阵在由 r 定义的范围内,并且使用 codist 来指定数组值在各个工作进程之间的分布。

    • 如果 r 是标量,该函数会创建 1r 范围内的随机整数。

    • 如果 r 是一个向量,该函数会创建在 r(1)r(2) 范围内的随机整数。

    codist 指定为 "codistributed" 以使用默认的 codistributor1d 分发方案或者由 codistributor1dcodistributor2dbc 对象定义的分发方案。

    当您在通信作业或 spmd 代码块中创建协同分布数组时,该函数会在每个工作进程上创建一个数组。如果您在通信作业或 spmd 代码块之外创建协同分布数组,则该数组仅存储在创建该协同分布数组的工作进程或客户端上。

    默认情况下,协同分布数组具有底层类型 double

    cR = randi(r,sz,codist) 创建一个均匀分布的随机整数的协同分布数组,其中大小向量 sz 定义了 cR 的大小。例如,randi(5,[2 3],"codistributed")15 之间创建一个 2×3 的共分布随机整数数组。

    cR = randi(r,sz1,...,szN,codist) 创建一个 sz1-by-...-by-szN 协同分布数组,由 1r 之间的均匀分布的随机整数组成。sz1,...,szN 表示每个维度的大小。

    cR = randi(___,datatype,codist) 创建一个均匀分布的随机整数协同分布数组,其底层类型为 datatype。例如,randi([1,5],1,"int8","codistributed")1050 之间创建一个共分布的 8 位随机整数。您可以将此语法与前面语法中的任何大小参量一起使用。必须在数组大小和数据类型参量后指定 codist

    cR = randi(___,"noCommunication") 创建一个均匀分布的随机整数的协同分布数组,而不使用工作进程之间的通信。

    当您创建非常大的数组或者您的通信作业或 spmd 代码块使用许多工作进程时,工作进程之间的通信可能会减慢数组的创建速度。使用此语法可以减少工作进程之间的通信所需的时间来提高代码的性能。

    提示

    当您使用此语法时,会跳过一些错误检查步骤。在对代码进行原型设计后(无需指定 "noCommunication"),使用此语法可以提高代码的性能。

    您必须在大小、数据类型和 codist 参量后指定 "noCommunication"

    cR = randi(___,like=p) 使用数组 p 来创建均匀分布的随机整数的协同分布数组。您还可以指定 "noCommunication" 作为函数调用的一部分。

    返回的数组 cR 具有与 p 相同的基础类型、稀疏性和复杂度(实数或复数)。

    示例

    全部折叠

    创建一个 1000×1000 的共分布双精度矩阵,其中 randi 的值从 0 到 12,按其第二维(列)分布。

    spmd(4)
    C = randi([0 12],1000,"codistributed");
    end

    有 4 个工作进程,每个工作进程包含一个 1000×250 的本地 C 块。

    创建一个 1000×1000 的共分布 single 矩阵,其中 randi 的值从 1 到 4,按其列分布。

    spmd(4)
    codist = codistributor1d(2,100*[1:spmdSize]);
    C = randi(4,1000,1000,"single",codist);
    end

    每个工作进程包含一个 100×spmdIndex 的本地 C 片段。

    输入参数

    全部折叠

    输出值的范围,指定为整数标量或向量。

    • 如果 r 是标量,该函数会创建 1r 范围内的随机整数。

    • 如果 r 是一个向量,该函数会创建在 r(1)r(2) 范围内的随机整数。

    方阵的大小,指定为整数。

    • 如果 n0,那么 cR 就是空矩阵。

    • 如果 n 为负数,则该函数将其视为 0

    协同分布数组的分布方案,指定为以下选项之一:

    • "codistributed" - 使用默认 codistributor1d 对象定义的默认分发方案。

    • codistributor1d 对象 - 使用 codistributor1d 对象中定义的一维分布方案。要使用默认的一维分布方案,您可以指定不带参量的 codistributor1d 函数。

    • codistributor2dbc 对象 - 使用 codistributor2dbc 对象中定义的二维块循环分布方案。要使用默认的二维块循环分布方案,您可以指定不带参量的 codistributor2dbc 函数。

    每个维度的大小,指定为整数行向量。该向量的每个元素表示相应维度的大小:

    • 如果任意维度的大小为 0,则 cR 就是空数组。

    • 如果任何维度的大小为负数,则该函数将其视为 0

    • 除了第二维度之外,randi 会忽略大小为 1 的尾随维度。例如,randi(10,[3 1 1 1],"codistributed") 生成一个 3×1 的均匀分布随机整数共分布向量。

    示例: [2 3 4] 创建一个 2×3×4 的协同分布数组。

    每个维度的大小,指定为整数值的单独参量。

    • 如果任意维度的大小为 0,则 cR 就是空数组。

    • 如果任何维度的大小为负数,则该函数将其视为 0

    • 除了第二个维度之外,该函数将忽略大小为 1 的尾随维度。

    返回数组的底层数据类型,指定为以下选项之一:

    • "double"

    • "single"

    • "logical"

    • "int8"

    • "uint8"

    • "int16"

    • "uint16"

    • "int32"

    • "uint32"

    • "int64"

    • "uint64"

    要创建的数组的原型,指定为 codistributed 数组。

    如果不指定 datatype,则生成的协同分布数组具有与 p 相同的基础类型、稀疏性和复杂度(实数或复数)。

    版本历史记录

    在 R2014a 中推出