用C#产生随机字符窜
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C#产生随机字符窜相关的知识,希望对你有一定的参考价值。
我会用C编 但我需要C#版的 C的代码是如下(我想用C#实现同样的功能):
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void main()
int flag;
int j, k = 0;
char ch[N+1] = NULL;
srand ((unsigned)time(NULL));
for(j=0;j<N;j++)
flag = rand ()%3;
if(flag == 0)
ch[k++] = 'A' + rand()%26;
else if(flag == 1)
ch[k++] = 'a' + rand()%26;
else if(flag == 2)
ch[k++] = '0' + rand()%10;
printf("%s\n", ch);
getch();
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
class Program
protected string randString()
string str = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+";//75个字符
Random r = new Random();
string result = string.Empty;
//生成一个8位长的随机字符,具体长度可以自己更改
for (int i = 0; i < 8; i++)
int m = r.Next(0, 75);//这里下界是0,随机数可以取到,上界应该是75,因为随机数取不到上界,也就是最大74,符合我们的题意
string s = str.Substring(m, 1);
result += s;
return result;
static void Main(string[] args)
Program p=new Program();
string RandSting = p.randString();
Console.WriteLine("0",RandSting);
Console.Read();
一楼正解 参考技术A 以下代码在VS2008中验证通过,生成的是8个字符长度的随机字符
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
class Program
protected string randString()
string str = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+";//75个字符
Random r = new Random();
string result = string.Empty;
//生成一个8位长的随机字符,具体长度可以自己更改
for (int i = 0; i < 8; i++)
int m = r.Next(0, 75);//这里下界是0,随机数可以取到,上界应该是75,因为随机数取不到上界,也就是最大74,符合我们的题意
string s = str.Substring(m, 1);
result += s;
return result;
static void Main(string[] args)
Program p=new Program();
string RandSting = p.randString();
Console.WriteLine("0",RandSting);
Console.Read();
参考技术B 要这么麻烦?
为什么不考虑用guid实现呢
string newguid = System.Guid.NewGuid().ToString();
生成出来时32位的,你可以自己substring 参考技术C // 随机字符生成器
public static string MakePassword(string pwdchars, int pwdlen)
string tmpstr = "";
int iRandNum;
Random rnd = new Random();
for (int i = 0; i < pwdlen; i++)
iRandNum = rnd.Next(pwdchars.Length);
tmpstr += pwdchars[iRandNum];
return tmpstr;
直接调用
string randomchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string password = MakePassword(randomchars, 6);
即可生成6位随即字符,OK? 参考技术D 这个网址对你应该有帮助,http://zhidao.baidu.com/question/122317098.html。也是C#随机产生字符串的
C#中如何产生随机字符串
如何例用C#产生 A到Z 数字0到9 两种组和之间的随机字符串 要求是
第次不能重复 而且每次都要有 数字和字母两者 字数是 20位
我想要的是 两次产生 或是多次产生的串列 没有相同的 而不是单次里面没有重复的字符 但是一定要是数字和字母都有的 这样我想你搞起来会更简单吧 呵呵
List<string> strList = new List<string>();//创建一个存放A到Z,0到9的字符串列表
for (int i = 65; i <= 90; i++)
char aa =(char) i;
strList.Add(aa.ToString());//把A到Z放到列表中
char[] number=new char[10];//把0到9字符存入字符数组中
for (int i = 48; i <= 57; i++)
char aa = (char)i;
strList.Add(aa.ToString());//把A到Z放到列表中
number[i-48]=aa;
string resultStr = "";//你要的字符串
for (int i = 0; i < 20; i++)
Random random = new Random();
int index = random.Next(strList.Count);
resultStr = resultStr + strList[index];
strList.RemoveAt(index);
if (resultStr.IndexOfAny(number) == -1)//判断是否含有数字,没有则重新生成字符串
goto loop;//跳到上面
这样产生的字符串,字符不会有重复的。而且一定会有两字符和数字的。
我已经调试过了,你看看结果。
我运行的结果是:768543210ZYXWVUTSRQ9 参考技术A public string CreateCheckCode()
char[] CharArray = 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9';
string sCode = "";
Random random = new Random();
for (int i = 0; i < 20; i++)
sCode += CharArray[random.Next(CharArray.Length)];
return sCode;
补充:你定义一个集合(Collection),用于保存两次生成的sCode 参考技术B private int rep = 0;
private string GenerateCheckCode()
string str = string.Empty;
long num2 = DateTime.Now.Ticks + this.rep;
this.rep++;
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
Random r = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
int n = r.Next(6, 11);
for (int i = 0; i <n; i++)
char ch;
int num = random.Next();
if ((num % 2) == 0)
ch = (char)(0x30 + ((ushort)(num % 10)));
else
ch = (char)(0x41 + ((ushort)(num % 0x1a)));
str = str + ch.ToString();
return str;
生成5-10个字符之间的随机字符串。
以上是关于用C#产生随机字符窜的主要内容,如果未能解决你的问题,请参考以下文章