Hi Sebastien,

It worked perfectly for me in $ERROR, but I tested it on NONMEM 7.4.3. Maybe nm 
version matters.

Warm regards,
Tingjie

From: Sebastien Bihorel <sebastien.biho...@cognigencorp.com>
Date: Monday, 3 June 2017 at 22:54
To: Tingjie Guo <i...@tingjieguo.com>
Cc: "nmusers@globomaxnm.com" <nmusers@globomaxnm.com>
Subject: Re: Random number generation


Thanks Tingjie for your suggestion

Unfortunately, as is, the suggested code is rejected by NONMEM 7.3 if used in 
$ERROR. Some additional setup calls might be required.

An (admittedly heavy-handed) alternative that actually works is to create and 
import a fortran routine (see NONMEM help topic about FUNCA, or VECTRA).

runif.f90:
      FUNCTION FUNCA(X,X1,X2)
      USE SIZES, ONLY: DPSIZE
      REAL(KIND=DPSIZE) :: X,X1,X2,FUNCA
      FUNCB = RAND()
      RETURN
      END

Control stream:
...
$SUBROUTINES ADVAN_ TRANS_ OTHER=runif.f90
...
$ERROR
  VECTRA(1) = 0
  VECTRA(2) = 0
  VECTRA(3) = 0

  RND = FUNCA(VECTRA)
...

________________________________
From: "Tingjie Guo" <i...@tingjieguo.com>
To: "Sebastien Bihorel" <sebastien.biho...@cognigencorp.com>, 
nmusers@globomaxnm.com
Sent: Monday, June 3, 2019 12:58:56 PM
Subject: Re: Random number generation

Hi Sebastien,

As far as I know, you could write verbatim code to generate random numbers 
during estimation. E.g:

$PK|$DES|$ERROR
RAN = any value ; initialization
"RAN = RAND(0) ; start verbatim code

A random number between 0 and 1 from uniform distribution will be assigned to 
RAN. This function is called for each record of your input data. I believe it's 
also possible to call it more/fewer times through checking ICALL.

Warm regards,
Tingjie




________________________________
From: owner-nmus...@globomaxnm.com <owner-nmus...@globomaxnm.com> on behalf of 
Sebastien Bihorel <sebastien.biho...@cognigencorp.com>
Sent: Thursday, May 30, 2019 12:34
To: nmusers@globomaxnm.com
Subject: [NMusers] Random number generation


Hi,

Is it possible for NONMEM to generate a random number during an estimation run?

Thank you

Sebastien Bihorel

Reply via email to