171  
查询码:00000459
如何生成不同的随机数
作者: 李永强 于 2020年10月12日 发布在分类 / BIM组 / BIM视图 下,并于 2020年10月12日 编辑
unity生成不同的随机数

在模拟停车场数据时,需保证生成的车牌号均不相同,于是想到一下方法,记录以备后面查看:

private string RndomStr(int codeLength)
    {
        //组成bai字符串的字符集合 0-9数字、大小du写字母/*a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,*/
        string chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q,R,S,T,U,V,W,X,Y,Z";
        string[] charArray = chars.Split(new System.Char[] { ',' });
        string code = "";
        int temp = -1;//记录上次随机数值,尽量避免生产几个一样的随dao机数
        System.Random rand = new System.Random();
        //采用一个简单的算法以保证生成随机数的不同
        for (int i = 1; i < codeLength + 1; i++)
        {
            if (temp != -1)
            {
                rand = new System.Random(i * temp * unchecked((int)System.DateTime.Now.Ticks));//初始化随机类
            }
            int t = rand.Next(61);
            if (temp == t)
            {
                return RndomStr(codeLength);//如果获取的随机数重复,则递归调用
            }
            temp = t;//把本次产生的随机数记录起来
            code += SwithToUpperStr(charArray[t]);//随机数的位数加一
        }
        if (SaveCreateStrDic.ContainsKey(code))
        {
            return RndomStr(codeLength);
        }
        SaveCreateStrDic[code] = code;
        return code;
    }
    private string SwithToUpperStr(string testStr,bool isToUpper=true)
    {
        if (isToUpper)
        {
            testStr = testStr.ToUpper();
        }
        else
        {
            testStr = testStr.ToLower();
        }
        return testStr;
    }



 推荐知识

 历史版本

修改日期 修改人 备注
2020-10-12 17:51:49[当前版本] 李永强 创建版本

知识分享平台 -V 4.8.7 -wcp