dividerand — Divide target indices randomly into training, validation, and test sets.

dividerand(Q,trainRatio,valRatio,testRatio) randomly permutes the one-based target indices 1:Q and divides them into training, validation, and test row vectors. dividerand(Q) uses the documented default ratios 0.7, 0.15, and 0.15.

Syntax

[trainInd, valInd, testInd] = dividerand(Q)
[trainInd, valInd, testInd] = dividerand(Q, trainRatio, valRatio, testRatio)

Inputs

NameTypeRequiredDefaultDescription
QIntegerScalarYesNumber of targets to divide.
trainRatioNumericScalarNo0.7Training-set allocation ratio.
valRatioNumericScalarNo0.15Validation-set allocation ratio.
testRatioNumericScalarNo0.15Test-set allocation ratio.

Returns

NameTypeDescription
trainIndNumericArrayOne-based training-set indices.
valIndNumericArrayOne-based validation-set indices.
testIndNumericArrayOne-based test-set indices.

Returned values from dividerand depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:dividerand:InvalidArgumentInputs, dimensions, replacement flags, or weights are malformed.sampling: invalid argument
RunMat:dividerand:InternalInternal conversion or allocation fails.sampling: internal error

How dividerand works

  • Q must be a nonnegative integer scalar.
  • Q is capped at 10,000,000 so index partitions fail cleanly before excessive host allocation.
  • Ratios must be finite nonnegative scalar values, and at least one ratio must be positive.
  • Ratios are normalized before allocation, so they do not need to sum to one.
  • Returned indices are one-based row vectors and together form a random permutation of 1:Q.
  • Empty partitions are returned as 1-by-0 numeric tensors.

Examples

Default split

[trainInd,valInd,testInd] = dividerand(100)

Explicit split ratios

[trainInd,valInd,testInd] = dividerand(3000, 0.6, 0.2, 0.2)

Using dividerand with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how dividerand changes the result.

Run a small dividerand example, explain the result, then change one input and compare the output.

FAQ

Does dividerand respect rng?

Yes. The random permutation is drawn from RunMat's global random generator, so rng('default') and numeric seeds make results reproducible.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how dividerand is executed, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.