【发布时间】:2011-11-19 12:35:54
【问题描述】:
我想生成八位 (uint8_t) 随机数,以便排除一组已经指定的众所周知的数字。基本上是 0x00 - 0xFF 之间的数字,但我在该范围内有一些我不想出现的数字。
我正在考虑用允许的数字填充一个向量,然后选择一个(伪)随机索引并使用它。
我怀疑他们在这方面可能存在严重缺陷,因此请寻求线索/建议。解决方案不必是火箭科学级别,只要简单到“出现”随机即可:)
编辑:我不想使用像 boost 这样的外部库,因为我正在研究 ARM 嵌入式解决方案
编辑:我不支持 C++11
【问题讨论】:
-
您的解决方案对我来说听起来不错。去吧。 (不确定这是否应该是答案或评论,但实际上没有什么可添加的;从数组中选择随机元素总是发生......)
-
+1 这是一种常用的方法来选择具有禁止值的随机数。
-
如果你的禁用数字列表在运行时没有改变,并且如果 256 字节对你来说不是很多内存,那么我会说你是最好的解决方案。
-
@TonyK - 是的,它不会改变,它是 256 字节内存是可以容忍的内存