I am trying to write a new COBOL program that can estimate PI by simulating ‘Buffon’s needle’ experiment. I am trying to use the RANDOM function but not able to get the desired results. Requires help for more inputs on RANDOM function, I tried in the Manual but did not get the required help.
Inputs in pgm.
Distance-between- lines (eg. 100 for 100 mm.)
Needle-length (eg.40 for 40 mm)
Needle-drops (eg 1000 )
Buffons Needle formula Pi = 2 * L /(X * P)
To calculate the value 'P' I am using RANDOM function but not able to get the same.
Joined: 06 Jun 2008 Posts: 8231 Location: Dubuque, Iowa, USA
Is this for IBM's contest? There was the exact same topic on the Beginner's and Student's Forum the other day. I will repeat my comments from that forum:
The Enterprise COBOL Language Reference manual tells you plenty about the seed for RANDOM:
The seed value can be whatever you want between 0 and 2147483645 (in COBOL 5.1).
The seed value is only needed for the first use of RANDOM; after that, if no parameter is passed to RANDOM the next value in the current sequence will be returned.
If you don't specify a seed value the first call, RANDOM uses zero.
For any given seed value, the pseudorandom sequence returned will be the same.
So for simplicity of testing you probably want to use a constant for the seed value; for your actual run(s) you probably want to use something that will vary (based on time, for example -- calculate seconds elapsed today / this week / this month or this year). Note that the value returned by RANDOM needs to be stored in a COMP-1 or COMP-2 variable since it represents a floating point value between 0 and 1.