论坛首页 Java企业应用论坛

JAVA每日一题01

浏览 8623 次
精华帖 (0) :: 良好帖 (5) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-22  
ruby 代码:
5.times do
 arr=(1..49).to_a
 p (0..5).inject([]){|result,index| result << arr.delete_at(rand(49-index))}
end


result:
[41, 18, 15, 43, 40, 37]
[18, 26, 33, 15, 16, 27]
[14, 44, 49, 42, 8, 20]
[9, 42, 30, 28, 48, 19]
[11, 39, 21, 14, 35, 28]

0 请登录后投票
   发表时间:2009-04-22   最后修改:2009-04-22
Haskell:
import Random
import Data.List
import Control.Monad 

randomSelectFrom size ls = randomMove size [] ls
    where randomMove 0 rs xs = print rs
          randomMove n rs xs = do
              idx <- randomRIO (0, length xs - 1)
              let em =  xs !! idx
              randomMove (n-1) (em:rs) (delete em xs)

main = sequence$ replicate 5 (randomSelectFrom 6 [1..49])


Scala:
	(1 to 5) foreach { _ =>
		println(List.range(1,50).sort{ (_,_) => Math.random > 0.5}.take(6))
	}


Java:
import static java.util.Collections.*;
import java.util.*;

public class RandomS {
	public static void main(String[] args){
		for(int c = 0; c < 5;c ++){
			List<Integer> lst = new ArrayList<Integer>();
			for(int n = 1;n <= 49;n ++) lst.add(n);
			shuffle(lst);
			System.out.println(lst.subList(0,6));
		}
	}
}
0 请登录后投票
   发表时间:2009-04-23  
把Haskell版减少了两行:
import Random
import Data.List
import Control.Monad

shuffle ls@(x:xs) = do
    elm <- liftM (ls !!) (randomRIO(0 ,length xs))  
    liftM (elm:) (shuffle$  delete elm ls)
shuffle _         = return[]

main = sequence [shuffle[1..49] >>= print.take 6 | c <- [1..5]]
0 请登录后投票
   发表时间:2009-04-23   最后修改:2009-04-23
shuffle 犯规呀~~
不过 ruby 实现 shuffle 就一句 sort_by{rand}

5.times{ p((1..49).sort_by{rand}[1..7]) }

后知后觉的补充:嗯…… 和 QuakeWang 的一样
0 请登录后投票
   发表时间:2009-04-23  
night_stalker 写道
shuffle 犯规呀~~
不过 ruby 实现 shuffle 就一句 sort_by{rand}

5.times{ p ((1..49).sort_by{rand}[0..6]) }


就没有规则,何来犯规?
0 请登录后投票
   发表时间:2009-04-23  
Eastsun 写道

就没有规则,何来犯规?

不好意思,口癖…… 是褒义词…… 譬如我常常说“卡莲萌犯规了”,也是不带规则的
0 请登录后投票
   发表时间:2009-04-23  
night_stalker 写道
shuffle 犯规呀~~
不过 ruby 实现 shuffle 就一句 sort_by{rand}

5.times{ p((1..49).sort_by{rand}[1..7]) }

后知后觉的补充:嗯…… 和 QuakeWang 的一样

哇,这个sort_by{rand}[1..7]好强大呀!!呼呼~~
0 请登录后投票
   发表时间:2009-04-23  
华为的兄弟吧~~!!
0 请登录后投票
   发表时间:2009-04-24   最后修改:2009-04-24
看看 这里:http://www.iteye.com/topic/373123同类问题
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics