[英]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_MAX
由7.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.