24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1090  |  回复: 21
当前主题已经存档。

ms98

[交流] 【讨论】出个算法题大家松松脑筋

大家都知道很多语言都能产生(伪)随机数,为了不涉及到具体语言,我们假设函数Rand能产生1-100间的随机数。既然是随机,那么不保证不重复。例如,产生的数字为5,62,33,5...虽然每个数字都是随机的,但是有重复。
现在问题是,要得到70个随机数,其范围都在1-100之间,但是不允许重复。大家会如何设计该算法?
(我知道答案,但不是自己想出来的,感觉很巧妙,大家也想想吧,挺有意思)
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshilsh

荣誉版主 (职业作家)

优秀版主

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+1,VIP+0):谢谢交流 6-20 10:31
产生的时候,发生重复就删除,继续生成?

巧妙的办法还真没,没仔细想过,呵呵,楼下继续
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
2楼2009-06-20 01:09:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellus

木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+1,VIP+0):谢谢交流,你的方法确实有点麻烦 6-20 10:31
来试下
第一个数由Rand直接生成
接下来从剩于99个中随机取出,先求该数在99个数的队列中的位置: M=(99-1)*Rand/100+1,然后读出该数,(跳过已取出数即可)
再取第三数的位置: M=(98-1)*Rand/100+1
...
循环70次

感觉有点繁琐,期待答案
岂能尽如人意,但求无愧于心。
3楼2009-06-20 05:32:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

studyhae

木虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
重复了就重新随机呀,呵呵
4楼2009-06-20 07:55:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellus

木虫 (职业作家)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2,VIP+0):谢谢交流,哈哈 6-20 16:06
引用回帖:
Originally posted by dellus at 2009-6-20 05:32:
来试下
第一个数由Rand直接生成
接下来从剩于99个中随机取出,先求该数在99个数的队列中的位置: M=(99-1)*Rand/100+1,然后读出该数,(跳过已取出数即可)
再取第三数的位置: M=(98-1)*Rand/100+1
...
...

补充一下
采用数组G存放1-100
假设进行到某一步时存在N个未被选的数,选到其中第M个(M<=N),取出G(M),然后将G(M)赋值为最后一个数G(N),这样下一步数组中前N-1个数都是未被选到的,同样可以直接取出G(M')。

这样的优点有二:
1) Rand只要运行70次
2) 不需要判断取到的随机数是否重复
岂能尽如人意,但求无愧于心。
5楼2009-06-20 08:38:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2,VIP+0):谢谢交流 6-20 16:05
定义两个数组N[100],M[70],初值均置零。
for( i=1 : 70){
    do{
        a=RND;
        N=N+1;
        if (N==1){
           M=a;
          break;
        }while(1);
   }
zz
6楼2009-06-20 11:26:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhougc

木虫 (正式写手)

黑社会老大

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2,VIP+0):用时间做种子产生的随机数并不能保证不重复,谢谢交流 6-20 16:05
有算法为了避免伪随机数的产生,利用调用系统时间作为seed,
然后产生随机数的方法,这种方法是不会产生重复的数字的。

不过可能楼主有其他更好的方法,
我也再考虑考虑。
--------------------------------------------------------------------------看着我表情呆滞的头像,记住我!这个社会已经让我没办法笑出来.请各位版主按时缴...
7楼2009-06-20 11:47:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangmonk(金币+2,VIP+0):感谢交流! 6-20 20:18
有这么麻烦吗?
定义一个大小为100的数组,初始化为1-100即a=i+1(i=0,1,2……99)
调用random_shuffle(a,a+100),然后取其中任意七十个就行了
www.cvdelver.com
8楼2009-06-20 16:15:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ltprc

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
rjjy(金币+1,VIP+0):谢谢交流! 6-20 20:34
分配排序法,形如x[y[a]],将两个数组的数进行比较,即可
9楼2009-06-20 17:29:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jx_world

银虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
rjjy(金币+1,VIP+0):谢谢交流! 6-20 20:34
调用系统时间做种子
生成一个3-5位的随即数
取这个随机数平方的中间两位数,一般来说重复的可能性就大大降低了
10楼2009-06-20 17:40:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ms98 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上本子正文33页,违规吗?会被低分嘛? +8 1234567wang 2026-05-17 10/500 2026-05-18 18:52 by zzahkj
[基金申请] 国自然上会要求 +5 无名者登山 2026-05-18 9/450 2026-05-18 17:50 by BlakeReary
[基金申请] 青C资助名额大幅增加! +12 西葫芦炒鸡蛋 2026-05-13 16/800 2026-05-18 10:02 by Equinoxhua
[硕博家园] 我在等一个没有答案的答案 +3 Love_MH 2026-05-17 3/150 2026-05-18 02:22 by 竹林孤影
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 ky2p12rrjj 2026-05-15 4/200 2026-05-17 19:47 by Equinoxhua
[考博] 找博士生导师 +4 小代想上岸 2026-05-15 5/250 2026-05-17 17:44 by 脱颖而出
[考博] 2026博士还有哪些学校有名额 +6 小王求读研 2026-05-15 7/350 2026-05-17 16:54 by 知音湖畔
[考博] 26/27博士推荐 +3 1木头人13949 2026-05-13 3/150 2026-05-17 09:41 by YuY66
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:11 by 11n4dfd8yn
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:25 by ue3ir18jc3
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 4/200 2026-05-17 00:57 by ue3ir18jc3
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 3/150 2026-05-17 00:45 by ue3ir18jc3
[基金申请] 请问大佬b0816评完了吗 +4 市民华南虎 2026-05-12 8/400 2026-05-16 19:54 by Equinoxhua
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +9 一切都是空工 2026-05-12 20/1000 2026-05-16 19:52 by Equinoxhua
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 x0mp7owy2b 2026-05-15 4/200 2026-05-16 17:45 by j6b2pdz07o
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-16 13:57 by vcdazktkjx
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[考博] 26应届毕业生考博求助 +3 wo一定上岸 2026-05-13 3/150 2026-05-14 21:47 by 明海天涯
[考博] 材料类只有一篇综述能申博么 +4 乐逍遥谷 2026-05-13 4/200 2026-05-14 12:05 by zhyzzh
[论文投稿] 求助大佬sci投稿哪个好中 +3 江沅188 2026-05-12 4/200 2026-05-13 14:35 by 江沅188
信息提示
请填处理意见