如何解决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
有什么想法吗?
解决方法
您可以使用此处找到的函数 RandomRowNumber
:VBA.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 举报,一经查实,本站将立刻删除。