In standard C, the following code generate 5 random numbers.
#include <stdio.h>#include <stdlib.h>int main (int argc, char *argv[]){/* Now generate 5 pseudo-random numbers */int i;for (i=0; i<5; i++){ printf ("rand[%d]= %u\n", i, rand ());}return 0;}
Each time you run the program, same serial of 5 numbers will be generated since the seed is retested. However, the same code as a mex function does not behave like this. Here is the mex code:
#include <stdio.h>#include <stdlib.h>#include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /* Now generate 5 pseudo-random numbers */ int i; for (i=0; i<5; i++) { mexPrintf ("rand[%d]= %u\n", i, rand ()); } return; }
Every time this mex function produces different serial of 5 random numbers. Does anybody know why? How the mex function resets the seed number each time? Thanks in advance.
Best Answer