`
844604778
  • 浏览: 551429 次
文章分类
社区版块
存档分类
最新评论

关于随机数

 
阅读更多

在设计程序时候,经常涉及到随机序列/随机数的生成。犹记得初学C语言的时候,一个人称“小马哥”的同学让我替他写一个生成随机数的小程序段,那时对这些一无所知,走了不少弯路才整出来。近日,又接触到类似的东西。整理如下,以便查询。

一、随机数

借助C提供的函数库。以下代码功能:生成N位纯数字密码

#include<stdio.h>
#include<stdlib.h>
#include <time.h>   /*包含的头文件*/

void function(int n)    /*生成N位的随机纯数字密码*/
{
 int i;
 printf("产生的");
 printf("%d",n);
 printf("位随机密码为:  ");
 for(i=0;i<n;i++)
      printf("%d",rand()%10);
 printf("\n");
}

int  main(void)
{
int num;
srand( (unsigned)time( NULL ) );  /*保证每次生成的随机数不相同*/
printf("请输入你想得到密码的位数:\n");
scanf("%d",&num);
function(num);
return 0;
}


二、Guid 值

它是通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。它具有以下几个优点:

★GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。

★世界上的任何两台计算机都不会生成重复的 GUID 值。

★需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。

★GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

C++代码如下:

#include<iostream>
#include<objbase.h>/*头文件*/
using namespace std;

const char* newGUID()
{//--生成GUID
static char buf[64] = {0};
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{
_snprintf(buf, sizeof(buf)
, "{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"
, guid.Data1
, guid.Data2
, guid.Data3
, guid.Data4[0], guid.Data4[1], guid.Data4[2]
, guid.Data4[3], guid.Data4[4], guid.Data4[5]
, guid.Data4[6], guid.Data4[7]
);
}
return (const char*)buf;
}

int main(int argc, char* argv[])
{
CoInitialize(NULL);
cout<<newGUID()<<endl;
CoUninitialize();

system("pause");
return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics