c - 给定一个 32 位无符号随机数,如何在一定范围内操作值 [low, high]?

标签 c random coldfire

如标题所述,我在 Freescale Coldfire 芯片上使用随机数生成器,它返回一个 32 位无符号值。据我所知,没有办法配置生成器来限制范围。将数字控制在可接受范围内的最佳方法是什么?

我正在考虑通过高范围值修改数字,但我仍然必须处理下限。

最佳答案

这篇C 常见问题解答文章How can I get random integers in a certain range?解释了如何正确生成 [M,N] 范围内的随机数,基本上您应该使用的公式是:

M + (random number) / (RAND_MAX / (N - M + 1) + 1)

关于c - 给定一个 32 位无符号随机数,如何在一定范围内操作值 [low, high]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437378/

相关文章:

c - Infix to Postfix 程序无法按预期工作

c++ - 如何使用带有 libcurl 的 HTTP 在 C/C++ 中上传文件?

random - 随机选择一组推特用户的好方法是什么?

c++ - 与 C++ 2011 不相关的并行随机种子?

linker - 合并 2 个或多个 ELF 文件的最简单方法

c - 在GDB(Eclipse)中使用堆栈跟踪调试Coldfire MCF5235上的未知程序异常

hardware - 在 Coldfire/ucLinux 上对 PIO 进行 Bitbanging

c++ - 编译 C 和 C++

c - 错误不兼容的指针类型?

java - 通过不使用 Collection Shuffle 来防止数字重复 [Java]