方法一:
在ACCESS环境中用rnd函数解决,以下查询展示了如何从表中随机抽取10条记录
SELECT top 10 * FROM tbl1 ORDER BY Rnd(id)
另外, Rnd(id) 其中的id只是为了提供一个种子,可以利用其他任何数值来完成
id字段是自动编号字段,也可以用其他字段代替,只要能生成数值就行。
如果每次RND得到的结果都一样,那是因为没有使用 Randomize 语句来初始化随机数生成器。

方法二:
在ASP、VB中无法使用上述方法,可以参考使用adodb.recordset.recordcount 属性以及 adodb.recordset.AbsolutePosition 以及 RND 函数来解决问题。
Function RndID()
    Dim rs As New ADODB.Recordset
    Dim strsql As String
    strsql = "select * from tbl1"
    rs.CursorLocation = adUseClient
    rs.Open strsql, CurrentProject.Connection, 2, 3
    '在Access中可以使用 CurrentProject.Connection,
    '其他语言中可以用 ADODB.CONNECTION对象。
   
    Dim i As Long
    Dim lngCount As Long
    Dim lngRnd As Long
    lngCount = rs.RecordCount
    '一下取前10条随机记录
    For i = 1 To 10
        lngRnd = Int((lngCount * Rnd) + 1)
        rs.AbsolutePosition = lngRnd
        Debug.Print rs("id")
    Next
End Function

方法三:
用当前 TIME 做种子生成随机数。如果时间重复最终还是重复,没有从根本上解决问题,说白了还是种子的问题。要不重复就要彻底解决种子的问题,如果能取得毫秒级时间就基本能解决了
或者建议在组织 SQL 语句的时候有意插入一个 VB 函数生成的随机值作为种子也可以
Dim sql
Dim RNUM
Randomize
RNUM = Rnd
sql = "select top 1 * from tbl1 order by rnd(" & RNUM & "-id)"

其中,方法三已经经过验证,可以使用。

附:
关于用 SQL 得到 Access 的随机记录集    
此问题早已有人提出,解决的方法也非原创。写这篇东西,意在共同探讨。毕竟目前还没有非常满意的结论。先说说现在网上大多数转贴是这样说的:

SQL Server 2000:
SELECT TOP n * FROM tanblename ORDER BY NEWID()

Access:
SELECT TOP n * FROM tanblename ORDER BY rnd([一个自动编号字段])

SQL 有了 NEWID() 就无须多讲拉,但 Access 中没有,所以寄望于 RND,实际上这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASP 中却无法得到预期的随机效果——无论如何刷新得到的结果都是一样的(就算在语句前加上 Randomize 也一样于事无补)。

当然,也不少其他的解决方法,用数组的,用循环的……不好说不对,但总觉得跑题了。后来有另外的朋友试验出这个方法:表 TestTable,有自动编号字段 TestID,标题字段 TestTitle,随机取得5条纪录,用代码:

Randomize
SELECT TOP 5 [TestTitle] FROM [TestTable] ORDER BY Rnd(-(TestID+"&Rnd()&"))

实际上,我目前需要应用到随机纪录的地方就是用的这条语句,除此我没有其他更好的方法(但用过才知道,其实这条语句偶然会生成重复纪录的)。也许你会有更好的方法……

转载于:https://www.cnblogs.com/cole2295/archive/2009/07/11/1520997.html

关于如何生成随机记录相关推荐

  1. 简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希

    最近看到 一个 样本 ,里面有键盘 按键记录的功能 ,而且 实现也比较 简单,运行 记录 的效果还 不错 .主要思路如下 : //假代码 int i=0;for(i=0;i<0x100;i++) ...

  2. 【Sql Server】数据库变量表和临时表的区别,并运用变量表遍历和随机生成姓名记录

    作者:小5聊 简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑 公众号:有趣小馆,一个有趣的关键词回复互动功能 目录 1.表变量 1.1.表变量基本信息 1.2.表变量使用场景 1.3.表 ...

  3. python生成随机骨料模型代码_Abaqus Python脚本-3D随机球形骨料的生成

    hello,大家晚上好,今天是2020/11/30,周一晚上11点30.脚本时间 又是一个安静的晚上,一个人躲在房间里....写专栏.在脚本文集里,上次分享了一个关于脚本的工具,上上次分享了一个2D的 ...

  4. 如何生成随机不重复的11位数字

    要求 不重复 随机 11位数字 不占存储 我们都知道11位数字(random)对应有最大值max和最小值min99999999999和10000000000.很简单的从最小值开始按顺序分发到最大值,就 ...

  5. 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码...

    只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这 ...

  6. 如何生成随机的字母数字字符串?

    我一直在寻找一种简单的 Java算法来生成伪随机的字母数字字符串. 在我的情况下,它将用作唯一的会话/密钥标识符,在"超过500K+世代中"可能"是唯一的(我的需求实际上 ...

  7. oracle取整函数 kettle,怎样使用Kettle生成随机样本数据

    一.问题背景 很多数据工程师都会遇到一种情况,即部分数据不是来源于真实场景,而是需要随机生成.虽然从严格意义上讲,随机意味着有统计规律的实验结果,但在大部分ETL场景下,随机指的是伪随机数据.本文试图 ...

  8. MySQL 生成随机数字、字符串、日期、验证码以及 UUID

    文章目录 生成随机数字 生成 0 到 1 之间的随机数 生成指定范围内的随机数 生成 6 位数字手机验证码 生成遵循正态分布的随机数 生成随机字符串 生成固定长度的随机字符串 生成可变长度的随机字符串 ...

  9. mysql随机生成数据并插入_python生成随机数据插入mysql

    import random as r import pymysql first=('张','王','李','赵','金','艾','单','龚','钱','周','吴','郑','孔','曺','严' ...

最新文章

  1. JAVA学习笔记--数组初始化
  2. 统计学习方法第二章作业:感知机模型原始形式与对偶形式代码实现
  3. prim算法_贪心算法详解(附例题)
  4. 选购工业交换机时,工业交换机的IP等级多少比较合适?
  5. 6491: Daydream
  6. mongo db 分享 ppt
  7. hdu 2089 不要62--数位dp入门
  8. mysql建立唯一索引升序_MySQL数据库SQL优化技巧六之唯一索引
  9. 泰勒公式到欧拉公式的推导
  10. 篮桥杯,翻硬币 (贪心)
  11. 《2022,自我增值的7个好习惯》读书笔记
  12. 正则表达式元字符查询
  13. java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决
  14. 随机生成稀疏矩阵_面向异构众核超级计算机的大规模稀疏计算性能优化研究
  15. 如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)
  16. 孩子到底是食物过敏?还是食物不耐受?
  17. 文件存储的实现-login登录案例1-内置存储
  18. 绘制思维导图的作用是什么?怎样绘制思维导图
  19. 搞清FT , DFT , DTFT , DFS之间的关系
  20. 千万下载量开源软件托管给陌生人 植入恶意代码窃取用户密币

热门文章

  1. 【三种可能问题】RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED
  2. 解决方法WindowsError: [Error 193] %1 is not a valid Win32 application
  3. HTTP/1问题和HTTP/2解决思路
  4. 实现对文本的简单one-hot编码
  5. android启用其他应用程序,杀死Android上的另一个应用程序?
  6. 1.NET 4.6.1向.NET core 2.0项目迁移(HelloWorld篇)
  7. 一个项目学会前端实现登录拦截
  8. Windows Mobile设备操作演示准备工作小记
  9. AngularJS学习笔记二:AngularJS指令
  10. C# 发送电子邮件(含附件)用到的类 system.web.mail