惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
B
Blog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园_首页
博客园 - 聂微东
量子位
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
F
Fortinet All Blogs
The Cloudflare Blog
T
Tailwind CSS Blog
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
腾讯CDC

博客园 - 暗香浮动

quartz.net 项目无法加载的问题 wcf的诡异问题 获取iTextSharp 的image 报错 FastReport 隐藏matrix的列如何实现 获取FileStream物理文件位置 log4net 1.2.11.0 的一点更新 无法更改数据库最大线程数 Moss文件操作速度慢的问题解决记录 无法更改数据库最大线程数 windows 服务循环任务.服务启动后无法停止重启的解决办法 单用户模式恢复到多用户模式. mssql 数据库还原脚本 让客户ie8浏览器默认使用ie7兼容模式 - 暗香浮动 - 博客园 Package load Analyzer Create two fload when i run vs2008.here is solution to stop this. vss 命令行unpin批量操作 及vss的bug补丁 wf数据库Tracking服务 数据库表详解 截断css影响的问题 clrprofile造成的日志肿瘤问题解决 webconfig中配置log4net 数据访问及业务层使用
生成随机字符串的问题
暗香浮动 · 2009-12-07 · via 博客园 - 暗香浮动

工作中经常需要生成不重复的随机字符串。

使用random来生成的话。短时间内生成的重复太多如这篇文章的  http://www.cnblogs.com/smhy8187/articles/888729.html 

现发现关于重复太多也是有办法解决的  就是Random类定义成 静态类.

和这篇文章的http://www.cnblogs.com/insus/articles/1396908.html 我都试验了。效果都不是很好。

考虑使用 Guid来截取效果可能不错试验了一下效果还可以。如果想使用全部字母的话。可以考虑和前面提到的两个连接的文章结合起来创建到字母表的映射修改一个算法出来。

    class Program
    {
        
static void Main(string[] args)
        {
           
            List
<string> list = new List<string>();
            
int count = 8000, lenght = 6;
            
int had = 0
           
            
while (list.Count < count)
            {
                
for (int i = 0; i < count -had; i++)
                {
                    
string s = Guid.NewGuid().ToString().Replace("-","").Substring(0,lenght);//obj.RandomNumber(true, true, 6);
                    list.Add(s);
                    
                }
                
for (int i = 0; i < list.Count - 1; i++)
                {
                    
for (int j = i + 1; j < list.Count; j++)
                    {
                        
if (list[i].Equals(list[j]))
                        {
                            list.RemoveAt(j);
                            j
--;
                        }
                    }
                }
                had 
= list.Count;
                Console.WriteLine(had);

            }

            Console.Write(list.Count);
            Console.ReadLine();
            
        }
    }