admin 管理员组

文章数量: 887021


2023年12月16日发(作者:xor校验)

程序有一个参数,表示生成的密码的长度

运行的时候要加上,比如./password 8

我写的很简单,参数没做检查,你应该自己去完善一下。

#include

#include

#include

void generate(int len,char* buffer)

{

/*产生密码用的字符串*/

static

int i = 0;

for(; i < len; i++)

{

buffer[i] = string[rand()%strlen(string)]; /*产生随机数*/

}

}

int main(int argc, char* argv[])

{

int len = atoi(argv[1]); /*指定生成的密码长度*/

srand(time(0)); /*设定随机数种子*/

char *buffer = (char*)malloc(len + 1); /*分配内存*/

generate(len,buffer); /*生成密码*/

puts(buffer); /*输出到屏幕*/

FILE* fp = fopen("pass","w"); /*打开输出文件*/

if(fp == NULL)

return -1;

fwrite(buffer, sizeof(char), len, fp); /*写文件*/

fclose(fp); /*关闭文件*/

free(buffer); /*释放动态分配的内存*/

return 0; /*程序结束*/

}

自己可以写一个函数。

IT生活系列群:

50337593 IT-live(软件开发)

计算机软件技术群,技术是相通的,大家取长补短,共同进步吧!--软件不仅仅是一种思想。他是一门艺术

30633141 IT-live(网站建设)

const char string[]=

"abcdefghiljklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

网虫们的天地。大家要努力把我们的家园建得更好。Asp、Php、Jsp、

50337724 IT-live(心理就诊)

工作生活中 难免会有不开心、不痛快地事 我们有专业的心理医师 有热心的IT朋友们,让大家帮助你解除困惑。让你开心每一天!

50337649 IT-live(项目外包)

证明你的实力,实现你的目标。80%的能力+100%的努力=成功!!!!!!!

3431641 IT-live(招聘求职)

面包很重要。有了它,才能走遍天下!

1949892 it_live(美工设计)

再好的软件。没有好的界面是不行的。

欢迎IT爱好者的加入。

愿我们在这共同的群体中,找到自己想要的生活!! !!

我记得好象是rand函数吧,可以生成随机数,至于具体的位数,是有参数选择的

这是完整的你只要进去改改数字就可以生成8位的了:希望对你有用!

using System;

using ;

using uration;

using tions;

using ;

using ty;

using ;

using trols;

using ts;

using ntrols;

using g;

using g;

using ;

public partial class UserControls_Gif :

{

protected void Page_Load(object sender, EventArgs e)

{

string tmp = RndNum(5).ToUpper();

n["ImageV"] = tmp;

HttpCookie a = new HttpCookie("ImageV", tmp);

(a);

CheckCodeImage(tmp);

}

private void ValidateCode(string VNum)

{

Bitmap Img = null;

Graphics g = null;

MemoryStream ms = null;

int gheight = * 15;

Img = new Bitmap(gheight, 30);

g = age(Img);

//背景颜色

();

//文字字体

Font f = new Font("Arial Black", 11);

//文字颜色

SolidBrush s = new SolidBrush();

ring(VNum, f, s, 3, 3);

ms = new MemoryStream();

(ms, );

ontent();

tType = "image/Jpeg";

Write(y());

e();

e();

();

}

private string RndNum(int VcodeNum)

{

string Vchar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p" +

",q,r,s,t,u,v,w,x,y,z";

string[] VcArray = (new Char[] { ',' });

string VNum = "";

int temp = -1;

Random rand = new Random();

for (int i = 1; i < VcodeNum + 1; i++)

{

if (temp != -1)

{

rand = new Random(i * temp * unchecked((int)));

}

int t = (35);

if (temp != -1 && temp == t)

{

return RndNum(VcodeNum);

}

temp = t;

VNum += VcArray[t];

}

return VNum;

}

private void CreateCheckCodeImage(string checkCode)

{

if(checkCode == null || () == )

return;

image = new ((int)g(( *

15.5)), 30);

Graphics g = age(image);

try

{

//生成随机生成器

Random random = new Random();

//清空图片背景色

();

//画图片的背景噪音线

for(int i=0; i<25; i++)

{

int x1 = ();

int x2 = ();

int y1 = ();

int y2 = ();

ne(new Pen(), x1, y1, x2, y2);

}

Font font = new ("Arial", 14, (

=

|

));

GradientBrush

, d, 1.2f, true);

ring(checkCode, font, brush, 2, 2);

//画图片的前景噪音点

for(int i=0; i<100; i++)

{

int x = ();

int y = ();

el(x, y, gb(()));

}

//画图片的边框线

ctangle(new Pen(), 0, 0, - 1, - 1);

Stream ms = new Stream();

(ms, );

ontent();

tType = "image/Gif";

Write(y());

}

finally

{

e();

e();

}

}

}

#include

#include

#include

main()

{

brush new

GradientBrush(new Rectangle(0, 0, , ),

srand(time(0));

int a=rand()%900000+100000;

printf("随机数%d",a);

}

#include

#include

#include

int main()

{

srand( time(NULL) );

int a= rand()%900000 + 100000*(rand()%9+1);

printf("随机数%dn",a);

return 0;

}

C语言下没有真正的随机函数,如果用srand与rand配合产生随机数,每个数之间的间隔需要在1秒钟以上.

下面是我写的一个用来随机产生7-9位QQ邮箱的源代码,原理是先用随机函数产生一个<10的整数(这个数是所生成QQ号码的位数),然后判断这个数是否在7~9之间,如果满足要求,下面将一位一位地产生每一位数字,最后与"@"连接,生成一个QQ邮箱,并写入文件.

VC++6.0下编译通过

函数produceQQMail()用来产生随机数的代码:

#include

#include

#include

#include

#define MAX_ADDRESS 1000

char directory[20];

DWORD writeFile(const char*filename,char*str)

{

FILE *fp;

fp=fopen(filename,"a+");

if(fp==NULL)

{

puts("Cannot open this file!");

return -1;

}

fprintf(fp,"%sn",str);

fflush(fp);

//fputs(str,fp);

return 1;

}

DWORD produceQQMail() //→→→→→产生QQ邮箱函数

{

unsigned int i,count;

char zj[20];

char compare[20];

unsigned long relative;

for(count=1;count<=MAX_ADDRESS;count++)

{

Sleep(600);

srand((unsigned)time(0));

while(1)

{

relative=1+(int)(10.0*rand()/(RAND_MAX+1.0));//产生QQ号码的位数

if(relative<7||relative>9)

continue;//判断是否满足所需要的位数

Sleep(100);

for(i=0;i

{

itoa(1+(int)(10.0*rand()/(RAND_MAX+1.0)),&zj[i],10);//生成每一位数字,将其转换为字符型,并保存在数组中

}

zj[i]='0';

strcat(zj,"@");//连接生成邮箱

if(count>1&&strcmp(compare,zj)==0) //比较前后两者以防出现相同的邮箱

continue;

strcpy(compare,zj);

if(writeFile(directory,zj)==1)

{

printf("===>生成第%d个QQ邮箱n",count);

//system("cls");

break;

}

}

}

return 1;

}

void main()

{

puts("=>请输入您要保存到的文件名及其目录");

scanf("%s",directory);

puts("=>Now producing QQ mail addresses……");

produceQQMail();

}

随机数是怎么产生出来的呢?

可以利用C语言中的种子函数srand( )和伪随机函数rand( )来实现。

① 首先,给srand(m )提供一个“种子”m,它的取值范围是从0~65535。

② 然后,调用rand( ),是伪随机数,它会根据提供给srand( )的“种子”值返回一个随机数(在0~32767之间)。

③ 根据需要多次调用rand( ),从而不断地得到新的随机数。

④ 无论何时,你都可以给srand( )提供一个新的“种子”,从而进一步“随机化”rand( )的输出结果。

例如,取m=17,则执行了srand(17)之后,再执行rand( )函数,将得到输出值94;第二次调用rand( ),会得到26,……反复调用rand( )就能产生一系列的随机数。

注意:若m不变,则rand( )的输出系列也不变,总是94,26,602,……等等。所以,建议摇号的“种子”选为当前日期或时间,以保证每天的摇号值都不相同。

一个简单的参考程序 彩票选号器

已调试成功的选号器源程序如下,遗憾的是只有伪随机数字发生器,种子(1-65536)不变则数字不变。因此建议以月日作为种子数(如7月27日则输入727)

#include /*全局变量及函数提前说明:*/

#include

typedef struct liuyu{int data;struct liuyu*link;}test;

liuyu *p,*q,*r,*head;

int L; /*元素的个数*/

int m=sizeof(test);

void build(); /*生成数字循环链表*/

void display(); /*输出链表*/

/*---------------------------------------------------------*/

void build() /*数字循环链表的生成*/

{int i;

head=(test*)malloc(m); /*m=sizeof(test);*/

p=head;

for(i=1;i

{p->data=i;

p->link=(test*)malloc(m); /*m=sizeof(test));*/

p=p->link;

}

p->data=i;

p->link=head;

}

/*---------------------------------------------------------*/

void display() /*数字循环链表的输出*/

{p=head;

while (p->link!=head)

{printf("%3d",p->data);

p=p->link;

}

printf("%3dn",p->data);

}

/*---------------------------------------------------------*/

void main(void) /* 输出福彩1-36个数字中的7个随机号码*/

{ L=36;

int n,i,j;

build();

printf("random number=");

scanf("%d",&n);

srand(n);

p=head;

for(j=1;j<=7;j++)

{n=rand();

for(i=1;i<=n;i++)

{q=p; /* 删除元素X,注意保存X的前趋元素指针! */

p=p->link;}

printf("%d",p->data);

q->link=p->link;

}

/*---------------------------------------------------------*/

L=10; /* 马上接着运行体彩10中选7程序 */

build();

printf("nrandom number2=");

scanf("%d",&n);

srand(n);

printf("nn");

p=head;

for(j=1;j<=7;j++)

{n=rand();

for(i=1;i<=n;i++)p=p->link;

if(p->data==10)p->data=0;

printf("%d",p->data);

}

}

4位数字是没有重复的吧

#include

#include

#include

void rnd4(int b[])

{

int a[10];

for(int i=0;i<10;i++)

{

a[i]=i;

}

int m=10;

for(i=0;i<4;i++)

{

//生成1到m的随机数rn

int rn=rand()%m;

b[i]=a[rn];

m--;

//把a[rn]放到数组a的末端

int temp=a[m];

a[m]=a[rn];

a[rn]=temp;

}

}

void main()

{

srand(time(0));

int b[4];

rnd4(b);

}

//b即是你要的数组

看看得不得:

#include "stdio.h"

#include "math.h"

#define N 3 /*根据你的需要而定*/

void main()

{

int a[N];

int j;

for(j=0;j

for(;;)

{

a[j]=rand();

if(a[j]>=1000&&a[j]<10000) break;

}

for(j=0;j

printf("a[%d]=%dn",j,a[j]);

}


本文标签: 生成 数字 函数 产生 种子