난수 생성을위한 4 바이트의 공간이 있습니다.현재 시간을 사용하여 난수를 생성하는 방법
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;
}
: 나는 지금까지 다음 한 현재 시간 (시대도 할 것)
을 채우기 위해 마지막 바이트는 용기와 슬롯 (이 질문에 대한 관련 없음)에 사용되는 그래서 3 바이트가 이 올바른지? 난 임의의 숫자를 생성 할 수 있지만 그것은 유효하게가는 경우 평가할 수 없습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
왜'rand()'를 사용하지 않으시겠습니까? 시간은 무작위성과 거리가 멀다. – perreal
쉬프트는 항상 0을 채우고,'& ~ (0xFF) '는 필요 없습니다. –