int main(){

    uint8_t *wdata = NULL;
    wdata = calloc(5, sizeof(uint8_t));

    for (int j =0;j<5;j++){

        wdata[j] = rand();

    }

}


rand()函数生成16位数据。如何生成8位随机值?是否需要使用自定义功能?

最佳答案

如何在C中生成8位随机数


给定的代码如

uint8_t *wdata = calloc( 5, sizeof( uint8_t ) );


就像是

for ( int j = 0;j < 5; j++ )
{
    wdata[ j ] = rand();
}


会很好的工作。

整数分配给无符号值将被截断,这正是您想要的。请参见6.5.16.1 Simple assignment of the C Standard

请注意,7.22.2 Pseudo-random sequence generation functions, paragraph 5保证RAND_MAX至少为32767,比8位“宽”,因此保证结果可以“填满” 8位变量。

关于c - 如何在C>中生成8位随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53378519/

10-11 23:03
查看更多