关于随机数
2013-01-12 22:03
169 查看
在设计程序时候,经常涉及到随机序列/随机数的生成。犹记得初学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;
}
一、随机数
借助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;
}
相关文章推荐
- 随机数:关于用Rand7生成Rand10的最准确的算法(MS中的一道题)--仿真证明
- 关于Random类产生随机数的一些问题
- 关于随机数的一道面试题
- 关于Sleep()函数不准确和随机数的问题
- 关于产生不重复随机数的算法
- 关于随机数的学习
- 关于linux下的随机数
- 关于随机数的小问题
- 关于随机数不得不说的一个方法
- 关于C程序生成随机数遇到的问题
- 关于java常用类Math的一些用法:计算数的绝对值,两个值比较大小,取0~1之间随机数
- 总结:关于如何产生几个不同随机数的问题(C/C++)
- 关于Java产生随机数代码
- 最透彻的关于“随机数种子”和“伪随机数”的产生原理
- 关于matlab生成随机数
- 关于怎样产生随机数的彻底研究
- 关于产生随机数,使用同一个Random()和不同Random()的区别。
- 关于加密,随机数,和后台绑定前台事件的做法
- 关于面试中经常出现的根据一个随机数构造另外的随机数的解法
- 关于随机数的一点新的小发现