This is not part of the Modelica standard library. You must explicitly supply this function (I sent you the source code) /PF
_____ From: owner-openmodelicainter...@ida.liu.se [mailto:owner-openmodelicainter...@ida.liu.se] On Behalf Of Mikael Hagernäs Sent: den 16 mars 2009 12:27 To: openmodelicainterest@ida.liu.se Subject: Re: Random generator in Modelica Ok. Can you please tell me why this doesnt work? loadModel (Modelica.Math.Random); model brus import Modelica.Math.Random; Real count; equation count=random(); end brus; simulate(brus,stopTime=5) record SimulationResult resultFile = "Simulation failed. Class Modelica.Math.Random (its type) not found in scope brus. No matching function found for Modelica.Math.Random Class Modelica.Math.Random not found in scope brus. Error occured while flattening model brus " end SimulationResult; Thanks 2009/3/16 Mikael Hagernäs <mikha...@student.liu.se> Ok. Can you please explain to me how to use this random function. How do i use this package 2009/3/15 Peter Fritzson <pe...@ida.liu.se> You can also write a random function in Modelica. See page 761 in my book. /Peter F Modelica.Math.Random This Random package placed as a preliminary subpackage of Math contains the following two random distribution functions random() for uniform distributions and normalvariate() for Normal distribution. Package header: package Random import Modelica.Math; // import might not be needed constant Real NV_MAGICCONST=4*exp(-0.5)/sqrt(2.0); type Seed = Real[3]; Modelica.Math.Random.random Uniform distribution random function Distribution uniform between 0 and 1. function random "input random number generator with external storage of the seed" input Seed si "input random seed"; output Real x "uniform random variate between 0 and 1"; output Seed so "output random seed"; algorithm so[1] := abs(rem((171 * si[1]),30269)); so[2] := abs(rem((172 * si[2]),30307)); so[3] := abs(rem((170 * si[3]),30323)); // zero is a poor Seed, therfore substitute 1; if so[1] == 0 then so[1] := 1; end if; if so[2] == 0 then so[2] := 1; end if; if so[3] == 0 then so[3] := 1; end if; x := rem((so[1]/30269.0 +so[2]/30307.0 + so[3]/30323.0),1.0); end random; Modelica.Math.Random.normalvariate Normal distribution random function function normalvariate "normally distributed random variable" input Real mu "mean value"; input Real sigma "standard deviation"; input Seed si "input random seed"; output Real x "gaussian random variate"; output Seed so "output random seed"; protected Seed s1, s2; Real z, zz, u1, u2; Boolean break=false; algorithm s1 := si; u2 := 1; while not break loop (u1,s2) := random(s1); (u2,s1) := random(s2); z := NV_MAGICCONST*(u1-0.5)/u2; zz := z*z/4.0; break := zz <= (- Math.log(u2)); end while; x := mu + z*sigma; so := s1; end normalvariate; -----Original Message----- From: owner-openmodelicainter...@ida.liu.se [mailto:owner-openmodelicainter...@ida.liu.se] On Behalf Of Adrian Pop Sent: den 15 mars 2009 18:10 To: openmodelicainterest@ida.liu.se Subject: Re: Random generator Hi Mikael, Basically you make an external function to return the random value. See an example how in OpenModelica1.4.5/testmodels/External* Also have a look at this thread (previously on OpenModelicaInterest): http://thread.gmane.org/gmane.comp.misc.openmodelica/501/focus=507 Cheers, Adrian Pop/ Mikael Hagernäs wrote: > Hi! > > I need to create a white noise signal. Is there any function or > algorithm i can use to create random numbers?