IModelling.RandBetweenI

Fore Syntax

RandBetweenI(Bottom: Variant; Top: Variant): Variant;

Fore.NET Syntax

RandBetweenI(Bottom: object;
             Top: object;
             Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): object;

Parameters

Bottom. The least integer value returned by the RandBetweenI method.

Top. The greatest integer value returned by the RandBetweenI method.

Context. Context. The parameter is used only in Fore.NET.

Description

The RandbetweenI method returns a random integer between two specified integers.

Comments

Use the IModelling.RandBetween method to get a random number between any two numbers.

Fore Example

Executing the example requires that the repository contains a modeling container with the MS identifier. This container includes a model with the MODEL_D identifier that is calculated by method of determinate equation and containing more than one input variable.The first and the second input variables must contain only integer values.

Add links to the Metabase, Ms system assemblies.

Sub UserRandBetweenI;
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    Term: IMsFormulaTerm;
    Inp_1, Inp_2: String;
    Expr: IExpression;
Begin
    Mb := MetabaseClass.Active;
    // Get the model
    ModelSpace := Mb.ItemById("MS").Bind;
    ModelObj := Mb.ItemByIdNamespace("MODEL_D", ModelSpace.Key).Edit;
    Model := ModelObj As IMsModel;
    Transf := Model.Transform;
    Formula := Transf.FormulaItem(0);
    Determ := Formula.Method As IMsDeterministicTransform;
    // Get the first input variable
    Term := Determ.Operands.Item(0);
    Inp_1 := Term.TermToInnerText;
    // Get the second input variable
    Term := Determ.Operands.Item(1);
    Inp_2 := Term.TermToInnerText;
    // Set expression for calculation
    Expr := Determ.Expression;
    Expr.References := "Ms";
    Expr.AsString := "RandBetweenI(" + Inp_1 + "," + Inp_2 + ")";
    If Expr.Valid
        Then ModelObj.Save;
        Else Debug.WriteLine(Model is not saved: error in formula);
    End If;
End Sub UserRandBetweenI;

After executing the example the model returns random numbers placed between appropriate points of the first and second input variables.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    Term: IMsFormulaTerm;
    Inp_1, Inp_2: String;
    Expr: IExpression;
Begin
    Mb := Params.Metabase;
    // Get the model
    ModelSpace := Mb.ItemById["MS"].Bind();
    ModelObj := Mb.ItemByIdNamespace["MODEL_D", ModelSpace.Key].Edit();
    Model := ModelObj As IMsModel;
    Transf := Model.Transform;
    Formula := Transf.FormulaItem[0];
    Determ := Formula.Method As IMsDeterministicTransform;
    // Get the first input variable
    Term := Determ.Operands.Item[0];
    Inp_1 := Term.TermToInnerText();
    // Get the second input variable
    Term := Determ.Operands.Item[1];
    Inp_2 := Term.TermToInnerText();
    // Set expression for calculation
    Expr := Determ.Expression;
    Expr.References := "Ms";
    Expr.AsString := "RandBetweenI(" + Inp_1 + "," + Inp_2 + ")";
    If Expr.Valid
        Then ModelObj.Save();
        Else System.Diagnostics.Debug.WriteLine("Model is not saved: error in formulaquot;);
    End If;
End Sub;

Example of Use in Expressions

Expression 1:

RandBetweenI(Min({Brazil|BCA}),Max({Brazil|BCA}))

Result: the random number from the range: minimum value of the Brazil|BCA factor - maximum value of the Brazil|BCA factor. An error occurs if the factor contains real values.

Use: it can be used in formulas of calculated series of time series database and model formulas of modeling container that is a child of the time series database.

Expression 2:

RandBetweenI(Min(X1),0)

Result: the random number that is placed between minimum value of the X1 factor and zero.

Use: it can be used in model formulas of modeling container.

See also:

IModelling | Time Series Database: Calculator | Modeling Container: Editing Regressor or Formula