BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
gkmzinsou
Calcite | Level 5

I'm trying to test a Monte Carlo simulation. Is there a way to randomly sample a number between +1 and -1 in SAS ?

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

Second example in this blog post - almost a decade old but still works 🙂

https://blogs.sas.com/content/iml/2011/08/24/how-to-generate-random-numbers-in-sas.html

 

The example below generates 10 values (do i=1 to 10) of random values, U between 0 and 1. 

The variable X, are uniform values between -1 and 1. 

 


@gkmzinsou wrote:

I'm trying to test a Monte Carlo simulation. Is there a way to randomly sample a number between +1 and -1 in SAS ?


data A;
call streaminit(123);       /* set random number seed */
   a = -1; b = 1;           /* example values of limits */

do i = 1 to 10;
   u = rand("Uniform");     /* u ~ U(0,1) */
   x = a + (b-a)*u; /* u ~ U(-1, 1)*/
   output;
end;
run;

 

EDIT: "Newer" method via @yabwon 

 

data want;
call streaminit(123);

do i=1 to 10;
   randVar = rand('uniform', -1, 1);
    output;
end;

run;

View solution in original post

4 REPLIES 4
Reeza
Super User

Second example in this blog post - almost a decade old but still works 🙂

https://blogs.sas.com/content/iml/2011/08/24/how-to-generate-random-numbers-in-sas.html

 

The example below generates 10 values (do i=1 to 10) of random values, U between 0 and 1. 

The variable X, are uniform values between -1 and 1. 

 


@gkmzinsou wrote:

I'm trying to test a Monte Carlo simulation. Is there a way to randomly sample a number between +1 and -1 in SAS ?


data A;
call streaminit(123);       /* set random number seed */
   a = -1; b = 1;           /* example values of limits */

do i = 1 to 10;
   u = rand("Uniform");     /* u ~ U(0,1) */
   x = a + (b-a)*u; /* u ~ U(-1, 1)*/
   output;
end;
run;

 

EDIT: "Newer" method via @yabwon 

 

data want;
call streaminit(123);

do i=1 to 10;
   randVar = rand('uniform', -1, 1);
    output;
end;

run;
gkmzinsou
Calcite | Level 5
Thanks !
ballardw
Super User

Continuous or integer?

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 966 views
  • 2 likes
  • 4 in conversation