查看完整版本: [-- 提交一道关于生成随机数的题目 --]

Ruby中文社区论坛 -> 题目征集 -> 提交一道关于生成随机数的题目 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

bbschat 2008-04-01 16:16

提交一道关于生成随机数的题目

输入:m, k (k,m都是整数,且 k ≦ m)
输出:一个数组,包含 k 个不重复的随机整数,每个随机整数 x 都满足 0 ≦ x ≦ m, 同时 x 的输出顺序也是随机的。

测试用例: 10.times do
puts get_rand_num(10, 6)
end输出例:

[1, 2, 6, 9, 5, 7, 8]
[3, 0, 5, 10, 1, 6, 9]
[0, 2, 8, 9, 3, 7, 6]
[9, 5, 2, 4, 6, 1, 3]
[9, 1, 10, 6, 2, 7, 4]
[5, 9, 10, 8, 1, 7, 4]
[0, 3, 6, 8, 7, 9, 1]
[10, 3, 8, 5, 2, 4, 1]
[0, 2, 10, 7, 6, 8, 4]
[7, 1, 5, 6, 4, 0, 8]

[ 本帖最后由 bbschat 于 2008-4-1 20:50 编辑 ]

xavier 2008-04-01 19:15
随机整数没有范围么?
输出例里面都是小于等于m的?

[ 本帖最后由 xavier 于 2008-4-1 19:24 编辑 ]

bbschat 2008-04-01 20:52
2楼理解的没错,随机整数范围就是 ≧ 0 且 ≦ m
已经略微修改了下顶楼的题目解释。

jmouse 2008-04-02 00:00
对于随机数,我有很多话要说。
最早玩的机器是APPLE II,在那上面学了logo,后来学了BASIC。
记得学BASIC期间,写了一个和简单的计算机出四则运算题的程序,用了RND函数。
后来发现我的程序怎么每次运行都给出一样的题目,随后知道了随机函数种子的说法。

后来在GB模式(苹果机上的低分辨率图形模式,我记得好象是叫GB)下,写了个程序,随机点亮一个屏幕点。不巧的是,所有的随机点都没有重复,最后恰好把整个屏幕点亮。于是自己写了个很得意的清屏效果。但是那时候就非常搞不清了,随机,概率,必然之间的关系。
我要在1到10里取10个数,什么叫随机?完全按照概率来,那第10个数就是必然的。
后来又学了更多,知道了概率得首先看样本。好比从概率上来说,投一枚硬币,其正反2面出现的几率是定比的(不一定是50%),但是连续仍10个正面也是可以的。
这个题目要求产生随机数,从目前的测试用例来看,是不相同的随机数。
我不知道是不是可以写出这样一个个函数,在小样本时可能产生相同的数,但是在足够大的样本数据时能保证分布是均匀的。
越想越乱。

luffyke 2009-04-07 15:24
学习学习,拿回去做做!

yellowfish222 2010-10-19 16:46
[s:12] [s:12] [s:12] [s:12]

weedor 2011-01-21 00:23
复制代码
  1. def get_rand_num(m,k)
    a=Array.new
    0.upto(k*3) do |i|
    a=rand(m)
    end
    b=a.uniq
    b[0..k].inspect
    end

    10.times do
    puts get_rand_num(10,6)
    end

这样呢?如果不行,把k*3扩大些


查看完整版本: [-- 提交一道关于生成随机数的题目 --] [-- top --]


Powered by phpwind v8.0 Code ©2003-2010 phpwind
Time 0.045096 second(s),query:2 Gzip enabled