C 语言使用 MAC Address 作为种子生成随机数
严格来说,如果 传递的 MAC Address 不变的话,生成的“随机数”也就固定下来了。和直接使用 MAC 地址的值似乎也没有什么区别。
目录
Core Code
#include <stdlib.h>
#include <stdio.h>
int anyFunc(){
// ...any other code...
#define mac_str_to_bin(pMacStr, pMacArray) do{ \
int _idx; \
char *_s, *_e; \
if ((pMacArray != NULL) && (pMacStr != NULL)) {\
_s = (char *) pMacStr;\
for (_idx = 0; _idx < 6; ++_idx) {\
pMacArray[_idx] = _s ? strtoul (_s, &_e, 16) : 0;\
if (_s)\
_s = (*_e) ? _e + 1 : _e;\
}\
}\
} while(0)
unsigned char dst[7] = {'\0'};
unsigned long int sumMac = 0;
// \/ use your API to get MAC Address here.
unsigned char tmpBuf4MAC[256] = "00:82:A2:39:BF:FE";
mac_str_to_bin(tmpBuf4MAC,dst);
for (dst[6]=0; dst[6]<6; dst[6]++) sumMac += dst[dst[6]];
srand(sumMac);
int random_value = rand();
// ...any others code...
return 0;
}
mac_to_bin()
function reference: mac地址转换为长整形1.注意使用 unsigned char 定义数组来保存 MAC 值, 而非 char。
使用 srand(unsigned int) 生成随机数种子,然后再调用 rand();一份 随机函数rand()和随机数种子的作用2 的 参考.