new files
This commit is contained in:
parent
3af7344581
commit
86c034bb8b
1364 changed files with 21352 additions and 0 deletions
33
Task/Knuth-shuffle/Fortran/knuth-shuffle.f
Normal file
33
Task/Knuth-shuffle/Fortran/knuth-shuffle.f
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
program Knuth_Shuffle
|
||||
implicit none
|
||||
|
||||
integer, parameter :: reps = 1000000
|
||||
integer :: i, n
|
||||
integer, dimension(10) :: a, bins = 0, initial = (/ (n, n=1,10) /)
|
||||
|
||||
do i = 1, reps
|
||||
a = initial
|
||||
call Shuffle(a)
|
||||
where (a == initial) bins = bins + 1 ! skew tester
|
||||
end do
|
||||
write(*, "(10(i8))") bins
|
||||
! prints 100382 100007 99783 100231 100507 99921 99941 100270 100290 100442
|
||||
|
||||
contains
|
||||
|
||||
subroutine Shuffle(a)
|
||||
integer, intent(inout) :: a(:)
|
||||
integer :: i, randpos, temp
|
||||
real :: r
|
||||
|
||||
do i = size(a), 2, -1
|
||||
call random_number(r)
|
||||
randpos = int(r * i) + 1
|
||||
temp = a(randpos)
|
||||
a(randpos) = a(i)
|
||||
a(i) = temp
|
||||
end do
|
||||
|
||||
end subroutine Shuffle
|
||||
|
||||
end program Knuth_Shuffle
|
||||
Loading…
Add table
Add a link
Reference in a new issue