生成随机数,不包括范围

Gor*_*ran 6 language-agnostic random

如何在排除某些范围的同时生成范围内的随机数.例如.范围1-10但不是2-4或7.我到目前为止使用的解决方案:

  • 如果它在不允许的范围内,则生成随机测试.根据结果​​输出数字或重试.
  • 将范围映射到统一范围.获得1到6之间的随机值然后映射回来(即6变为10).
  • 创建允许的范围(1-1,5-6,8-10).随机选择一个范围(可选择使用权重)和所选范围内的数字.

你的解决方案是什么?

Jas*_*hen 8

(b)使用单一范围并映射到允许的值.

(a)较慢且运行时间不确定,因为您必须等到获得正确范围内的数字.如果你要跳过很大的范围,你就会受到冲击.

(c)比(b)更复杂; 如果不需要,不要增加复杂性.