作者janewinnie (逃离)
看板Fortran
标题Re: [问题] 20个人中随机抽取10个人
时间Fri Apr 16 19:10:28 2010
忘了回来板上看@@
我已经写出一个方法了
先给每个人一个乱数
如果100人要取20人,就取乱数最大的20人
main program
implicit none
integer,parameter::k=20,n=100 !k是要选出的人数,n为总人数
integer::who(n) !who作为有无选上的标记
call choose(k,n,who)
write(*,*) who !1表是选上,0表示未选上
stop
end program
subroutine choose(k,n,who)
implicit none
integer::thft,i,n,person,loca(1)
real::rand(n)
integer::who(n)
call random_number(rand) !叫出"n"个乱数(每个人配一个乱数)
do i=1,k,1
loca=maxloc(rand) !找拥有最大乱数的那个人
person=loca(1)
who(person)=0 !这个人的who=1
rand(person)=0 !将这个人的乱数设为0,下次就不会再选到
enddo
return
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.185.83
1F:推 latinboy: 可以用 但是效率很惊人..... 04/16 20:54