Ani*_*K K 0 c random algorithm data-structures
有没有更好的方法在恒定时间内生成8位唯一和随机数?
下面的实现返回8位唯一随机数,但复杂度为O(n = 256),因为它必须循环通过is_generated
[]数组,直到它生成一个先前未生成的数组.它还需要额外的空间is_generated
.
uint8_t
random_octate(void)
{
static bool is_generated[256] = {false};
uint32_t num = rand()%256;
while(is_generated[num])
{
num = rand() % 256;
}
is_generated[num] = true;
return num;
}
Run Code Online (Sandbox Code Playgroud)