当前试图生成特定范围内的随机数;并确保它与其他存储记录相比是唯一的。
使用MySQL。可以像id,递增;但不可能是。
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
再次迭代每个对象以获得“number”字段。如果我们在本例中使用cast
,将第二个.map
转换为来自数据库的数值,那么我们也可以避免使用第二个.map
。
(Array(0...899999) - Order.pluck("CAST('number' AS UNSIGNED)")).sample.to_s.rjust(6, '0')
问题内容: 我需要生成一个范围内的随机唯一数字吗?怎么做 ? 我可以通过生成随机数 我知道这段代码不好,所以我需要一个更好的优化版本代码!帮帮我 ! 例如:如果我需要在1到15之间生成3个数字,它们应该像5、9、1而不是3,1,2 [具有1-3(我要生成的数字)] 问题答案: 以随机顺序排列数字范围的数组: 包装功能: 例: 结果:
问题内容: 我知道如何在Python范围内生成随机数。 我知道我可以将其循环生成n个数量的这些数字 但是,我需要确保该列表中的每个数字都是唯一的。除了大量的条件语句之外,还有一种直接的方法可以生成n个唯一的随机数吗? 重要的是列表中的每个数字都不同。 所以 [12,5,6,1] =好 但 [12,5,5,1] =不好,因为数字5出现两次。 问题答案: 如果您只需要采样而无需更换: random.s
问题内容: 我还没有找到一个函数来生成在一定范围内给定长度的随机浮点数组。 我看过随机抽样,但是似乎没有函数可以满足我的需要。 random.uniform接近,但它仅返回单个元素,而不返回特定数字。 这就是我所追求的: 这将返回在range中均匀分布的50个随机非唯一浮点数(即允许重复)的数组。 有这样的功能吗? 问题答案: 适合您的用例: 2019年10月更新: 虽然仍支持语法,但看起来API
问题内容: 因此,我在此代码位中的目标是随机掷两个骰子,众所周知,您的普通骰子只有6个面,因此我导入了Foundation以访问arc4random_uniform(UInt32)。我尝试使用(1..7)的范围来避免随机获得0,但是返回了一个我不太喜欢的错误。我试图这样做: 但是那又回来了 找不到接受提供的参数的’init’的重载 我希望这是足够的信息,可以为您提供帮助,帮助您:) 请注意,我只是
如果我做:Math.random() * 4-2 这会让我得到一个范围(-2,2),2是排他性的吗?我认为这是正确的,但我很少得到正数(是的,我知道这是一个随机算法,我们必须无限随机地生成它才能感觉到,但我只是想确保) 新问题 如果我想要所有从-1到1的随机有理数,两个边界都包括在内,那么这条线是否有效:Math.random() * 2.00000000000000001 - 1; 我查了一下,
问题内容: 我创建了以下方法,以便创建唯一的随机数。(此唯一值属于树的节点): 但这并不会创建唯一的数字,并且我的列表中仍然有重复的数字。喜欢 : 问题答案: 问题是,如果它发现重复的数字,您不会在检查函数中停止for循环。循环继续进行,b可以变回true。 例如,您应该做的是: