algorithm - 在给定范围内查找随机数,排除某些可能的数字

标签 algorithm random language-agnostic

假设给定了一个范围和范围内的一些数字(异常(exception))。现在您需要在给定的 exceptions except 范围内生成一个随机数。

例如,如果 range = [1..5] 且 exceptions = {1, 3, 5},您应该以相等的概率生成 2 或 4。

我应该用什么逻辑来解决这个问题?

最佳答案

如果您完全没有约束,我想这是最简单的方法:创建一个包含有效值的数组 a[0]...a[m] 。返回 a[rand(0,...,m)]

如果你不想创建一个辅助数组,但你可以计算原始范围内的异常e和元素n的数量,你可以简单地生成一个随机数r=rand(0 ... n-e),然后找到一个计数器不对异常打勾的有效元素,当它等于r<时停止.

关于algorithm - 在给定范围内查找随机数,排除某些可能的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18793852/

相关文章:

javascript - 使用 jQuery 和 Math.random() 选择嵌套对象属性

c# - 使用 GUID 是生成随机字符串和数字的有效方法吗?

java - 这个循环体重复了多少次?

javascript - Angular 将相同的成功和错误函数体应用于不同的 $http 请求

algorithm - 存储错误-第一次深度搜索算法

algorithm - 婚礼策划人

language-agnostic - 讨论框架时 "light weight"是什么意思

arrays - 圆形阵列中的间隔元素

php - 使用 PHP 的随机 CSS 类/id 名称

c# - 如何在不存储一副牌的情况下实现经销商类?