Simple Fortran Program With Random Numbers

Click For Summary

Discussion Overview

The discussion revolves around a FORTRAN program intended to generate random x and y coordinates that follow a specific quadratic pattern. Participants are addressing issues related to the program's output and logic, particularly focusing on the behavior of the random number generation and conditional statements within the code.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant reports that the FORTRAN compiler prints nothing, suggesting a potential issue with the program's logic.
  • Another participant inquires about the specific compiler being used, noting that behavior can vary between different compilers.
  • A third participant proposes that the lack of output may stem from the if statement preventing the write statement from executing, suggesting modifications to the logic of the program.
  • This same participant also adds a debugging write statement to provide output regardless of the condition.
  • Another participant points out that if y is constrained between 0 and 100, the expression y^2 - 100y will always yield a negative result, implying that the condition x >= y^2 - 100y will always be true under these circumstances.

Areas of Agreement / Disagreement

Participants express differing views on the logic of the program and its output. There is no consensus on the best approach to resolve the issues raised, and multiple perspectives on the program's behavior remain present.

Contextual Notes

Participants have noted potential limitations in the program's logic, particularly regarding the conditions set for output generation and the behavior of the random number generator. The discussion does not resolve these issues.

ƒ(x) → ∞
Messages
24
Reaction score
0
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
 
Technology news on Phys.org
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.
 
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.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
22
Views
5K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 22 ·
Replies
22
Views
5K
  • · Replies 19 ·
Replies
19
Views
7K