首页 > 代码 > 行业代码 > 正文

代码

阅读排行

随机打乱数组之洗牌算法
2014-10-28 14:03:53   来源:xjt@Fcode研讨团队   评论:0 点击:

本代码实现了著名的Knuth Shuffle洗牌算法,适合于随机打乱数组的情况。调用了 F90 的 random_seed 和 random_number 随机函数,符合 F90 语法。

如下代码,将 1-10 的数组打乱,输出可能为:

  9  4  2  3 10  7  8  5  6  1


Program www_fcode_cn
  Implicit None 
  Integer , parameter :: N = 10
  integer :: i
  integer :: a(N) = (/(i,i=1,N)/) 
  call Random_Seed()
  call Shuffle(a)
  write(*, "(10(i3))") a
 
contains
 
  Subroutine Shuffle( D )
    Implicit None
    Integer, Intent( INOUT ) :: D(:)
    integer :: i , p , t
    real :: r 
    Do i = size( D ) , 2 , -1
      call Random_Number( r )
      p = int( r * i ) + 1
      t = D( p )
      D( p ) = D( i )
      D( i ) = t
    End Do 
  End Subroutine Shuffle
 
End Program www_fcode_cn

相关热词搜索:洗牌 随机 打乱 数组

上一篇:矩阵直积(Kronecker积)
下一篇:塑性力学有限元-理论与应用源代码

分享到: 收藏