设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表 发新帖
查看: 1423|回复: 8

OfficePK第12期:Excel挑战Access,快速生成不重复随机数

[复制链接]

点击这里给我发消息

发表于 2016-4-2 20:49:48 | 显示全部楼层 |阅读模式
在Excel里生成随机数没什么,但要生成不重复的随机数有点麻烦,不过,再怎么麻烦,还是可以生成的。

于是就挑战一下Access吧,如何在Access中快速生成不重复的随机数。

Excel我会提供三种解法,叠代法、数组法和一个BT的简单方法,先悬念一下,过两天再来写。有知道各种解法的,也欢迎跟贴,这样我可以省点事。

点击这里给我发消息

发表于 2016-4-2 21:45:58 | 显示全部楼层
一下子出3题。神速啊,哦,妖速
这题是针对Access的,先对付这题

点击这里给我发消息

发表于 2016-4-2 22:14:24 | 显示全部楼层
原来 版主们已经做好答案在等这题了
1. 【Access小品】定量不重复随机抽选
     http://www.office-cn.net/thread-79259-1-1.html
2.  【算法】抽取不重复的随机数函数
     http://www.office-cn.net/thread-118713-1-1.html
3.   产生一个1-N 的不重复随机数
     http://www.office-cn.net/thread-118581-1-1.html
发表于 2016-4-4 15:04:25 | 显示全部楼层
本帖最后由 roych 于 2016-4-6 01:24 编辑

站长,我只能说你的方法太复杂了:

只要不是小数,完全秒成渣。至于小数嘛……
1、如果是2013版本,可以创建一个计算字段,除以整数(例如100或者10000什么的)。
2、2013版本以下,则使用查询中的表达式,具体不用多说了吧?
科普一下:
主键是不能重复的。因此由上面得到的随机数是不会重复的。当然,由于自动编号属于长整型,值域不能像双精度那样宽。
---------------------------
2016-4-6更新附件

双击“生成随机数”,在弹出的对话框里点击“是”(如图)【这里没有用宏来避开这个警告栏】:

然后双击打开查询“随机正数及小数”即可显示【如对正负数不做要求则可以打开表“测试数据”来查看】。

另,2007版本可以使用计算字段来代替查询【虽然我还是保留了查询】。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

 楼主| 发表于 2016-4-8 20:08:29 | 显示全部楼层
将ID设置成随机,这个我会了,其他的……还是不会……我承认我是笨妖。

点击这里给我发消息

 楼主| 发表于 2016-4-8 20:24:25 | 显示全部楼层
好吧,下来面看看Excel的解法。
第一种,迭代法。
把下面这个公式写在B2单元格里。
  1. =IF(COUNTIF(B$2:B$11,A1)=1,A1,RANDBETWEEN(1,100))
复制代码

不过,按下回车,会被提示“循环错误”,所以还需要启用迭代计算:【文件】》【选项】》【公式】》勾选【启用迭代计算】/【最多迭代次数】改为1
如附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

 楼主| 发表于 2016-4-8 20:31:52 | 显示全部楼层
第二种,数组法。
既然是数组法,那就是用数组公式了,这公式还是写在B2单元格里:
  1. =SMALL(IF(COUNTIF(B$1:B1,ROW($1:$10))=0,ROW($1:$10)),INT(RAND()*(10-ROW(A1))+1))
复制代码

如附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

 楼主| 发表于 2016-4-10 17:06:38 | 显示全部楼层
第三个BT法,不说了,直接上视频

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2016-4-13 13:36:14 | 显示全部楼层
这个方法果然BT~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2019-6-27 16:00 , Processed in 0.135096 second(s), 40 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表