C# 生成随机数

public static string GetRecordId(int count)
        {
            Random rdn = new Random();
            string str = "";
            string[] arraylist = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
            for (int i = 0; i < count; i++)
            {
                int number = rdn.Next(0, 15);
                if (i == 0)
                {
                    number = rdn.Next(1, 15);
                    str = arraylist[number];
                }
                else
                {

                    str += arraylist[number];
                }
            }

            return str;
        }

### C#生成随机数的方法 在 C# 编程语言中,`System.Random` 类提供了多种方式用于生成随机数。以下是几种常见的实现方法及其应用场景: #### 使用 `Random.Next()` 方法生成整数型随机数 可以通过调用 `Random.Next()` 来生成指定范围内的随机整数。此方法有三个重载版本: - 不带参数时返回一个非负的随机整数。 - 带单个参数时返回一个小于该参数的非负随机整数。 - 带两个参数时返回一个介于这两个参数之间的随机整数。 示例代码如下: ```csharp using System; class Program { static void Main() { Random random = new Random(); int randomInt = random.Next(); // 随机生成任意大小的正整数 Console.WriteLine("Random integer: " + randomInt); int randomIntLessThan100 = random.Next(100); // 生成小于100的随机整数 Console.WriteLine("Random integer less than 100: " + randomIntLessThan100); int randomIntInRange = random.Next(10, 50); // 生成10到49之间的随机整数 Console.WriteLine("Random integer in range 10 to 49: " + randomIntInRange); } } ``` 以上代码展示了如何利用 `Random.Next()` 函数生成不同类型的随机整数值[^2]。 #### 使用 `Random.NextDouble()` 方法生成浮点型随机数 如果需要生成双精度浮点数,则可以采用 `Random.NextDouble()` 方法。它会返回一个位于 `[0.0, 1.0)` 范围内的伪随机数。 示例代码如下所示: ```csharp double randomDouble = random.NextDouble(); // 返回 [0.0, 1.0) 的随机实数 Console.WriteLine("Random double between 0.0 and 1.0: " + randomDouble); ``` 对于更广泛的浮动区间需求,可扩展逻辑以适应特定上下界条件下的均匀分布采样操作。例如定义函数来获取给定区间的随机浮点数: ```csharp public double GetRandomNumber(double minimum, double maximum, int decimalPlaces) { System.Threading.Thread.Sleep(1); // 确保每次实例化种子值有所变化从而避免重复序列现象发生 Random randGen = new Random(DateTime.Now.Millisecond); return Math.Round(randGen.NextDouble()*(maximum-minimum)+minimum ,decimalPlaces ); } ``` 这里实现了自定义功能——基于用户输入设定最小最大边界以及期望保留的小数位数目得到相应结果[^5]。 #### 创建无重复项列表 当希望获得一系列互异而非冗余的数据集合时候,我们可以借助哈希表结构特性快速判断新产生的候选成员是否已经存在于当前积累成果之中;一旦发现冲突情况即刻重新抽取直至满足总数指标为止。 具体做法见下方示范程序片段: ```csharp static List<int> GenerateUniqueRandomNumbers(int minValue,int maxValue,int count){ if(count>(maxValue-minValue+1)){ throw new ArgumentException("无法从所设范围内提取足够的独特样本!"); } var rng=new Random(); var uniqueSet=new HashSet<int>(); while(uniqueSet.Count<count){ int candidate=rng.Next(minValue,maxValue+1); _=uniqueSet.Add(candidate)?true:false; } return uniqueSet.ToList(); } ``` 上述算法确保最终输出数组里的每一个元素都是独一无二的存在形式[^1]^。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值