繁体   English   中英

从 SecureRandom 随机数生成中排除数字

[英]Exclude number from SecureRandom random number generation

假设我们有一个使用这个的随机数生成器:

SecureRandom.random_number(10)

这会给你一个从 0 到 10 的随机数。

是否可以从中排除数字? 假设它将是8。

我在想这件事:

[SecureRandom.random_number(10)].grep_v(8)

但是可能有更正确和优化的方法吗?

Ruby 2.7.2

导轨 6.1.2

您可以生成最大为 9 的数字,而不是生成最多 10 的数字,如果结果为 8 或更大,则加 1:

number = SecureRandom.random_number(9)
number += 1 if number >= 8

或者您可以生成一个有效数字列表并随机选择其中一个,例如通过sample

VALID_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 7, 9]

number = VALID_NUMBERS.sample(random: SecureRandom)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM