Fortran无法生成所需的随机数

时间:2019-03-26 13:18:23

标签: fortran

我正在使用以下代码在多维数据集的表面上生成随机点:我为多维数据集的每个面分配了一个0到5的数字形式,我在整数0,...,5之间选择一个随机数选择脸部,然后使用rand()为其他两个坐标生成随机数;我在屏幕上打印结果并重复10次:

 DO nioni=1, 10
   j=int(rand()*6)

   IF (j==0) THEN
    xi=13000.9
    yi=(2.*rand()-1.)*13000.9
    zi=(2.*rand()-1.)*13000.9
   ELSE IF (j==1) THEN
    xi=-13000.9
    yi=(2.*rand()-1.)*13000.9
    zi=(2.*rand()-1.)*13000.9
    ELSE IF (j==2) THEN
     xi=(2.*rand()-1.)*13000.9
     yi=13000.9
     zi=(2.*rand()-1.)*13000.9
     ELSE IF (j==3) THEN
      xi=(2.*rand()-1.)*13000.9
      yi=-13000.9
      zi=(2.*rand()-1.)*13000.9
      ELSE IF (j==4) THEN
       xi=(2.*rand()-1.)*13000.9
       yi=(2.*rand()-1.)*13000.9
       zi=13000.9
       ELSE IF (j==5) THEN
        xi=(2.*rand()-1.)*13000.9
        yi=(2.*rand()-1.)*13000.9
        zi=-13000.9
   END IF

  WRITE(*,*) xi,yi,zi
  END DO

它会生成随机数,但不是必需的,实际上可以在此行中看到:

-1075.17151       852.002502       13000.9004   

该代码生成数字13000.9004而不是分配的13000.9。我注意到integers没有问题,只有real才出现此问题。编译器f77和f95也会发生同样的情况。

此问题来自何处?我该如何解决?

0 个答案:

没有答案