我正在使用以下代码在多维数据集的表面上生成随机点:我为多维数据集的每个面分配了一个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也会发生同样的情况。
此问题来自何处?我该如何解决?