簡體   English   中英

如何在 C> 中生成一個 8 位隨機數

[英]How to generate an 8-bit random number in C>

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 C 標准的簡單賦值

請注意, RAND_MAX7.22.2 Pseudo-random sequence generation functions 保證,第 5 段至少為 32767,比 8 位“寬”,因此結果保證“填充”一個 8 位變量。

因為 8 位數字最多可以包含0 - 255 所以如果我除以rand()%256我們得到 8 位隨機數。

  int main(){
    uint8_t *wdata = NULL;
    wdata = calloc(5, sizeof(uint8_t));
    for (int j =0;j<5;j++){
        wdata[j] = rand()%256;
   }
}

為了獲得更多的隨機性,您在除以256后使用一些素數加減差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM