Package org.apache.sysds.runtime.matrix.data

# Class LibMatrixDatagen

java.lang.Object
org.apache.sysds.runtime.matrix.data.LibMatrixDatagen

public class LibMatrixDatagen extends Object

## Method Summary

Modifier and Type
Method
Description
`static LongStream`
`computeNNZperBlock(long nrow, long ncol, int blen, double sparsity)`
Deprecated.
`static RandomMatrixGenerator`
`createRandomMatrixGenerator(String pdfStr, int r, int c, int blen, double sp, double min, double max, String distParams)`
`static void`
`generateRandomMatrix(MatrixBlock out, RandomMatrixGenerator rgen, org.apache.commons.math3.random.Well1024a bigrand, long bSeed)`
Function to generate a matrix of random numbers.
`static void`
`generateRandomMatrix(MatrixBlock out, RandomMatrixGenerator rgen, org.apache.commons.math3.random.Well1024a bigrand, long bSeed, int k)`
Function to generate a matrix of random numbers.
`static void`
`generateSample(MatrixBlock out, long range, int size, boolean replace, long seed)`
Generates a sample of size `size` from a range of values [1,range].
`static void`
`generateSequence(MatrixBlock out, double from, double to, double incr)`
Method to generate a sequence according to the given parameters.
`static String`
`generateUniqueSeedPath(String basedir)`
`static void`
`genRandomNumbers(boolean invokedFromCP, int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds)`
`static boolean`
`isShortcutRandOperation(double min, double max, double sparsity, RandomMatrixGenerator.PDF pdf)`
`static org.apache.commons.math3.random.Well1024a`
`setupSeedsForRand(long seed)`
A matrix of random numbers is generated by using multiple seeds, one for each block.
`static double`
`updateSeqIncr(double seq_from, double seq_to, double seq_incr)`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### isShortcutRandOperation

public static boolean isShortcutRandOperation(double min, double max, double sparsity, RandomMatrixGenerator.PDF pdf)

### updateSeqIncr

public static double updateSeqIncr(double seq_from, double seq_to, double seq_incr)

### generateUniqueSeedPath

public static String generateUniqueSeedPath(String basedir)

### setupSeedsForRand

public static org.apache.commons.math3.random.Well1024a setupSeedsForRand(long seed)
A matrix of random numbers is generated by using multiple seeds, one for each block. Such block-level seeds are produced via Well equidistributed long-period linear generator (Well1024a). For a given seed, this function sets up the block-level seeds. This function is invoked from both CP (RandCPInstruction.processInstruction()) as well as MR (RandMR.java while setting up the Rand job).

Parameters:
  `seed` - seed for random generator
Returns:
  Well1024a pseudo-random number generator

### computeNNZperBlock

@Deprecated public static LongStream computeNNZperBlock(long nrow, long ncol, int blen, double sparsity)
Deprecated.

### createRandomMatrixGenerator

public static RandomMatrixGenerator createRandomMatrixGenerator(String pdfStr, int r, int c, int blen, double sp, double min, double max, String distParams)

### generateRandomMatrix

public static void generateRandomMatrix(MatrixBlock out, RandomMatrixGenerator rgen, org.apache.commons.math3.random.Well1024a bigrand, long bSeed)
Function to generate a matrix of random numbers. This is invoked both from CP as well as from MR. In case of CP, it generates an entire matrix block-by-block. A `bigrand` is passed so that block-level seeds are generated internally. In case of MR, it generates a single block for given block-level seed `bSeed`. When pdf="uniform", cell values are drawn from uniform distribution in range `[min,max]`. When pdf="normal", cell values are drawn from standard normal distribution N(0,1). The range of generated values will always be (-Inf,+Inf).

Parameters:
  `out` - output matrix block
  `rgen` - random matrix generator
  `bigrand` - Well1024a pseudo-random number generator
  `bSeed` - seed for random generator

### generateRandomMatrix

public static void generateRandomMatrix(MatrixBlock out, RandomMatrixGenerator rgen, org.apache.commons.math3.random.Well1024a bigrand, long bSeed, int k)
Function to generate a matrix of random numbers. This is invoked both from CP as well as from MR. In case of CP, it generates an entire matrix block-by-block. A `bigrand` is passed so that block-level seeds are generated internally. In case of MR, it generates a single block for given block-level seed `bSeed`. When pdf="uniform", cell values are drawn from uniform distribution in range `[min,max]`. When pdf="normal", cell values are drawn from standard normal distribution N(0,1). The range of generated values will always be (-Inf,+Inf).

Parameters:
  `out` - output matrix block
  `rgen` - random matrix generator
  `bigrand` - Well1024a pseudo-random number generator
  `bSeed` - seed for random generator
  `k` - ?

### generateSequence

public static void generateSequence(MatrixBlock out, double from, double to, double incr)
Method to generate a sequence according to the given parameters. The generated sequence is always in dense format. Both end points specified `from` and `to` must be included in the generated sequence i.e., [from,to] both inclusive. Note that, `to` is included only if (to-from) is perfectly divisible by `incr`. For example, seq(0,1,0.5) generates (0.0 0.5 1.0) whereas seq(0,1,0.6) generates (0.0 0.6) but not (0.0 0.6 1.0)

Parameters:
  `out` - output matrix block
  `from` - lower end point
  `to` - upper end point
  `incr` - increment value

### generateSample

public static void generateSample(MatrixBlock out, long range, int size, boolean replace, long seed)
Generates a sample of size `size` from a range of values [1,range]. `replace` defines if sampling is done with or without replacement.

Parameters:
  `out` - output matrix block
  `range` - range upper bound
  `size` - sample size
  `replace` - if true, sample with replacement
  `seed` - seed for random generator

### genRandomNumbers

public static void genRandomNumbers(boolean invokedFromCP, int rl, int ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, long[] seeds)