gpt4 book ai didi

Ruby//range之间的随机数,保证对其他已有存储的唯一性

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:22 25 4
gpt4 key购买 nike

目前正在尝试生成特定范围内的随机数;并确保它与其他存储的记录相比是唯一的。

使用Mysql。可以像一个 id,递增;但不可能。

目前正在以“昂贵”的方式测试其他现有记录;但我很确定会有干净的 1/2 行代码可供使用

目前正在使用:

test = 0
Order.all.each do |ord|
test = (0..899999).to_a.sample.to_s.rjust(6, '0')
if Order.find_by_number(test).nil? then
break
end
end
return test

感谢您的帮助

最佳答案

这是我的单线解决方案。它也是更快的方法,因为调用 .pluck 从 Order 表中检索数字。 .select 为每条记录实例化一个“Order”对象(这是非常昂贵且不必要的),而 .pluck 则不会。它还避免使用 .map 再次迭代每个对象以获得“数字”字段。如果我们在这种情况下使用 CAST 转换为数据库中的数值,我们也可以避免第二个 .map

(Array(0...899999) - Order.pluck("CAST('number' AS UNSIGNED)")).sample.to_s.rjust(6, '0')

关于Ruby//range之间的随机数,保证对其他已有存储的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21967660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com