用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;
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位
我想要的是 两次产生 或是多次产生的串列 没有相同的 而不是单次里面没有重复的字符 但是一定要是数字和字母都有的 这样我想你搞起来会更简单吧 呵呵

loop:
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#产生随机字符窜的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何产生随机字符串

C#中Substring具体怎么用?(复杂的例子看不懂)

用indexOf获取字符窜某个字符的所有位置

在C语言中怎样产生随机的字符串

随机选择一个数组 C# [关闭]

Python学习之旅---数据类型(数字字符窜列表元组字典布尔值)