生成等长随机数值的方法


需要根据输入字符串,生成一个等长的随机数值,网上查了一下,没发现比较直接的方法。

自己写了一个,为便于理解,加了一些中间过程的变量。

虽然可以实现目的,但觉得有些繁琐,执行效率也不好,故贴于此,请高手指教。

 

       /// <summary>
        /// 数值字符串转换成等长的随机数
        /// </summary>
        /// <param name="inputStr">输入字符串</param>
        /// <returns></returns>
        private static string StringConvertRandomDouble(string inputStr)
        {
            if (inputStr.Length > 17)
            {
                return inputStr;//Double类型超出17位长度,需用科学计数法表示。转换会抛出异常。
            }
            string top = "";
            int inputStrLenght;//输入字符串原始长度
            if (double.TryParse(inputStr, out double newDouble))//判断能否转换位double类型
            {
                int IntegerLength;//整数部分长度
                double tempDouble = Math.Floor(newDouble);//向下取整,可能有符号,下面判断处理
                if (tempDouble < 0)
                {
                    IntegerLength = tempDouble.ToString().Length - 1;
                    top = "-";
                    inputStrLenght = inputStr.Length - 1;
                }
                else
                {
                    IntegerLength = tempDouble.ToString().Length;
                    inputStrLenght = inputStr.Length;
                }
                string a = "1".PadRight(IntegerLength, '0');//得到等长 100
                string b = "9".PadLeft(IntegerLength, '9');//得到等长的 999
                double minDouble = Convert.ToDouble(a);
                double maxDouble = Convert.ToDouble(b);
                Random _random = new Random();
                double outputDouble;
                if (_random != null)
                {
                    //在指定的范围内取随机的 Double
                    outputDouble = _random.NextDouble() * (maxDouble - minDouble) + minDouble;
                }
                else
                {
                    outputDouble = 0.0d;
                }
                return top + outputDouble.ToString().Substring(0, inputStrLenght);
            }
            else
            {
                return inputStr;
            }
        }

 

文章来源:https://www.cnblogs.com/LiYunQi/p/15678047.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:C# 将PDF转为线性化PDF
下一篇:Blazor是春天还是寒风里的挣扎
评论列表

发表评论

评论内容
昵称:
关联文章

生成等长随机数方法
生成随机数
C# 时间戳、随机数相关操作
验证码生成
GZDBHelper中Excute方法,外部在同一链接下执行,如果要获取输出参数,用此方法执行,配合GetParamValue执行,或者多次提交
关于二元插问题探讨
Vue.js中如何限制Props只接受特定数组:自定义验证方法解析
LabVIEW生成.NETDLL——C#下调用NI数据采集设备功能一种方法 [原创www.cnblogs.com/helesheng]
c# IdHelper生成唯一雪花Id
网页中会员充界面研究
CSS cursor 属性
EF 转换
ASP.NET Core MVC 在过滤器ActionFilter中保存页面生成html静态页面文件
10、物联网卡充及查询
formsubmit()方法不能触发onsubmit事件解决方法,兼容各版本浏览器。
JOC快速开发框架 表格改变更新合计
网站SEO优化-网站地图生成,SiteMap
vue自定义组件props中设置object属性默认
利用代码生成工具Database2Sharp生成ABP VNext框架项目代码
C# Newtonsoft.Json.JsonConvert.SerializeObject生成格式化JSON字符串

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码