Hi,
I want to generate a set of 250 numbers drawn from the set of integers [1,2,3,4,5,6,7}. I wonder if there is a simple way to do this in syntax, as I haven't been able yet to do this with the various RAND. functions, other than generating real numbers and re-computing them with other functions. Thanks in advance for help, Clive ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Administrator
|
* Use RV.UNIFORM function to generate integers in the range 1-7.
* From the FM: "The uniform distribution takes values in the range a<x<b". * Let a=1 and b=8, and then use TRUNC. new file. dataset close all. input program. loop #i = 1 to 250. - compute X = trunc(rv.uniform(1,8)). - end case. end loop. end file. end input program. frequencies X. <quote author="Clive"> Hi, I want to generate a set of 250 numbers drawn from the set of integers [1,2,3,4,5,6,7}. I wonder if there is a simple way to do this in syntax, as I haven't been able yet to do this with the various RAND. functions, other than generating real numbers and re-computing them with other functions. Thanks in advance for help, Clive ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD
--
Bruce Weaver bweaver@lakeheadu.ca http://sites.google.com/a/lakeheadu.ca/bweaver/ "When all else fails, RTFM." PLEASE NOTE THE FOLLOWING: 1. My Hotmail account is not monitored regularly. To send me an e-mail, please use the address shown above. 2. The SPSSX Discussion forum on Nabble is no longer linked to the SPSSX-L listserv administered by UGA (https://listserv.uga.edu/). |
Administrator
|
An approach I've adopted lately.
MATRIX. SAVE (TRUNC(UNIFORM(250,1)*7+1 ))/OUTFILE */VAR UNI7. END MATRIX.
Please reply to the list and not to my personal email.
Those desiring my consulting or training services please feel free to email me. --- "Nolite dare sanctum canibus neque mittatis margaritas vestras ante porcos ne forte conculcent eas pedibus suis." Cum es damnatorum possederunt porcos iens ut salire off sanguinum cliff in abyssum?" |
In reply to this post by Clive
Hi Bruce
Thank you very much for your solution to this problem, Regards, Clive ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Clive
Hi David
Thank you very much for your matrix solution to this problem, Regards Clive ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Bruce Weaver
Hi all,
This code works great. input program. loop #i = 1 to 250. - compute X =rv.univorm (.5,16). - end case. end loop. end file. end input program. frequencies X. Is there a way to tweak this so that it only generates numbers that 0.5 apart? I need numbers in this range but that only jump by 0.5 so: 0.50, 1.0, 1.5, 2.0, .....15.5, 16.0. Thanks much! Carol |
One way to do it, truncate to integers over 1-32 [note exactly 33 should never happen in rv.uniform(1,33)], and then divide by 2. Upped the number of simulated draws to show it is approximately is uniform as expected.
*************************. input program. loop #i = 1 to 1e6. - compute X =trunc(rv.univorm (1,33))/2. - end case. end loop. end file. end input program. frequencies X. *************************. |
Awesome andy!
This worked like a charm. Thanks for the quick response! |
Administrator
|
In reply to this post by Andy W
Here is the same approach but using David's MATRIX method:
MATRIX. SAVE (TRUNC(UNIFORM(1e6,1)*32+1)/2)/OUTFILE */VAR X. END MATRIX. GRAPH HISTOGRAM X. FREQUENCIES X.
--
Bruce Weaver bweaver@lakeheadu.ca http://sites.google.com/a/lakeheadu.ca/bweaver/ "When all else fails, RTFM." PLEASE NOTE THE FOLLOWING: 1. My Hotmail account is not monitored regularly. To send me an e-mail, please use the address shown above. 2. The SPSSX Discussion forum on Nabble is no longer linked to the SPSSX-L listserv administered by UGA (https://listserv.uga.edu/). |
Free forum by Nabble | Edit this page |