c - 如何使用当前时间创建随机数

标签 c random

我有 4 个字节的空间来创建一个随机数。最后一个字节用于容器和插槽(与这个问题无关)所以我有 3 个字节来填充当前时间(epoch 也可以)

到目前为止,我有以下内容:

uint32_t create_handle(uint8_t container_id, uint8_t file_slot)
{
    uint32_t handle;

    time_t now = time(NULL);
    handle = ((now << 24) & ~(0xFF));
    handle += (container_id << 4) + file_slot; /* Last byte is 4 bits of container + 4 bits of slot */
    return handle;
}

这是正确的吗?我能够生成随机数,但我无法评估它是否有效。有更好的方法吗?

最佳答案

你现在移动 24,只剩下 8。我想你只想移动 8。& ~(0xff) 是多余的。

使用其中一个随机数库怎么样?还是您永远不需要每秒处理一个以上的句柄?

关于c - 如何使用当前时间创建随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258325/

相关文章:

c - Matlab 在 MEX 函数中崩溃

c++ - 如何从文件夹树中快速选择一个随机文件?

javascript - 如何在 HTML/Java 脚本中获取随机数并让每个随机数发生不同的情况

python - 可扩展的偏向数生成器 - Python

嵌套 For 循环后的计数值 - 谷歌撰写

C 符号类型和不相交的 union 类型?

c - CUDA 大整数加法

c - 基于 ARM 的 arduino 型系统比基于 AVR 的系统慢得多

c# - 用随机字节填充列表

Python:我如何随机混合两个列表?