微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Access 中唯一的随机数生成

如何解决Access 中唯一的随机数生成

我正在尝试从 0 中添加一个唯一的随机数 - 在我的查询中列出长度,它用于随机数与中奖号码相关联的彩票。

我拥有的字段是玩家姓名(可以重复,因为他们可以购买多张门票)员工 ID(再次重复)和支付金额。

我尝试过 RND 函数Random Number: Int(Rnd([Employee ID])*20288)+1

但是我得到了重复的数字,当我尝试在数据表中排序时,随机数会自动更新,即使我只是点击它改变的记录。

Player Name  Employee ID    Payment Amount  Random Number
Bill Bill      000012          15.00               14756
Name2          000452          20.00               13916
Name2          000452          20.00               9512

有什么想法吗?

解决方法

您可以使用此处找到的函数 RandomRowNumberVBA.RowNumbers 对数字进行排序。

另一种极其简单的方法是将彩票号码写入具有 GUID随机自动编号 的(临时)表(在表设计器中,Access 将其称为复制 ID) 作为主键。然后对其进行排序,并在查询中选择 Top N 记录以获取中奖号码。

,

试试这个功能:

Public Function GetRandomDouble(Optional ByVal iLength As Integer = 3) As Double
    Dim s As String: s = String(iLength," ")     'fixed length string with 8 characters
    Dim n As Integer
    Dim ch As Integer 'the character
      Randomize
    For n = 1 To Len(s) 'don't hardcode the length twice
        Do
            ch = Rnd() * 127 'This could be more efficient.
            '48 is '0',57 is '9',65 is 'A',90 is 'Z',97 is 'a',122 is 'z'.
        Loop While ch < 48 Or ch > 57 'And ch < 65 Or ch > 90 And ch < 97 Or ch > 122
        Mid(s,n,1) = Chr(ch) 'bit more efficient than concatenation
    Next
  
GetRandomDouble = CDbl(s)
End Function

并像这样在您的查询中使用它

Random Number: GetRandomDouble(5)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。