產生一串具有唯一性的序列號,想過采取時間隨機生成,但是隨機實際上也是時間的種子,在不聯網的情況下,RTC的初始化一樣的情況下,出廠的時間應該對于板子來說是一樣的,那隨機產生的序列號還是唯一的嗎?如果不是,那怎么確保產生的序列號唯一?
uj5u.com熱心網友回復:
時間是精確到秒的吧,以時間為種子,那么能保證每個序列號的種子都是相同時間的嗎?uj5u.com熱心網友回復:
#pragma comment(lib,"ole32")
#include <objbase.h>
#include <stdio.h>
union U {
GUID guid;
unsigned char b[16];
} u;
int i;
char s[33];
void main() {
if (S_OK!=CoCreateGuid(&u.guid)) return;
for (i=0;i<16;i++) sprintf(s+i*2,"%02x",u.b[i]);
printf("GUID=%s\n",s);//每次結果都不一樣
}
//GUID=f5a44443aa5fb1479bf6741fa213d33c
uj5u.com熱心網友回復:
實際上有兩個疑惑,一個是單片機呼叫time函式是用的什么時間參考?如果是RTC的話那就有可能一樣的時間種子了,因為RTC需要初始化一個時間,現實中出廠的RTC初始化肯定是一個代碼,也就是出廠應該是一樣的時間,那就有可能時間種子的亂數介入的一樣。
uj5u.com熱心網友回復:
謝謝,只是不是不知道怎么產生亂數,是另一個問題uj5u.com熱心網友回復:
上量子芯片!
uj5u.com熱心網友回復:
查看了一些,上面寫道單片機采取定時器數值,但是效果一樣的,同一段代碼肯定定時的一樣,所以加入的種子應該也一樣吧uj5u.com熱心網友回復:
有的單片機帶噪聲發生器。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/281448.html
標籤:C語言
上一篇:char型陣列作為函式引數怎么用
下一篇:vs寫的cpp里中文莫名其妙亂碼
