# Simple Fortran Program With Random Numbers

## Main Question or Discussion Point

I have been busy trying to generate, using FORTRAN's random number generator, random x and y co-ordinates which follow a simple pattern such as x2-100x, but for some reason the FORTRAN compiler prints nothing.

Anybody want to help me with this problem?

Code:
	program quadraticdistribution
implicit none
integer i
integer x,y
real l
integer seed/-23434567/
c     ************************************
c     intialize the random number
l=rand(seed)

c     intialize the x and y values
x=0
y=0

30      do i=1,200
x=int(100*rand(0))
y=int(100*rand(0))
if (x.ge.(y*y-100*y)) goto 30
Write(*,*) x,y
enddo

stop
end

Related Programming and Computer Science News on Phys.org
minger
What compiler are you using? A lot of random stuff I've seen is compiler-specific. As a G95 user, I'm not familiar with your approach.

Mark44
Mentor
Since you're not getting any output, it's probably the case that your if statement is preventing the following write statement from executing. I added a write statement right after x and y get set, so you can at least get some output.

The main problem, I believe, is your goto in the middle of your loop. I changed the logic in your if statement so that if x < y^2 - 100y, the code prints the values of x and y. If x >= y^2 - 100y, the code doesn't print anything.
Code:
	program quadraticdistribution
implicit none
integer i
integer x,y
real l
integer seed/-23434567/
c     ************************************
c     intialize the random number
l=rand(seed)

c     intialize the x and y values
x=0
y=0

do i=1,200
x=int(100*rand(0))
y=int(100*rand(0))
write(*, *) x, y   ; for debugging purposes
if (x .lt. (y*y-100*y))
Write(*,*) x,y
endif
enddo

stop
end

If y lies between 0 and 100, y^2-100*y is always negative, and the condition x>y^2-100*y is always true.