c# - Get a random list of integer array in C#
问题描述
public static List<int> GetRandom()
{
Random rnd = new Random();
List<int> list = new List<int>();
while (list.Count <= 26)
{
int randomNumber = rnd.Next(1, 26);
if (!list.Contains(randomNumber))
{
list.Add(randomNumber);
}
}
return list;
}
This is a code where I have tried to get a random list of integer(from 1 to 26) but this doesn't return me the desired result. Here I want a random int array without any repeat.
解决方案
实际上,您想随机化整数范围。你可以这样做使用System.Linq
Random rnd = new Random();
Enumerable.Range(1, 27).OrderBy(_ => rnd.Next())
我什至使用 BenchmarkDotNet 测量和比较了两种解决方案,尽管我很确定,只是作为确认。测量了两种场景,一种是原始场景,另一种是包含 1000 个随机元素的场景。如果增加元素的数量,您可能会看到性能下降(这是合乎逻辑的,因为随着元素数量的增加,您发生碰撞的可能性会更高)。
BenchmarkDotNet=v0.11.5, OS=Windows 7 SP1 (6.1.7601.0)
Intel Core i7-6700 CPU 3.40GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
Frequency=3328320 Hz, Resolution=300.4519 ns, Timer=TSC
[Host] : .NET Framework 4.6.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2650.0
DefaultJob : .NET Framework 4.6.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2650.0
n=26
| Method | Mean | Error | StdDev | Rank |
|------- |---------:|----------:|----------:|-----:|
| Your | 4.463 us | 0.0882 us | 0.1936 us | 2 |
| Mine | 2.597 us | 0.0235 us | 0.0220 us | 1 |
n=1000
| Method | Mean | Error | StdDev | Rank |
|------- |-----------:|------------:|------------:|-----:|
| Your | 6,095.8 us | 119.4976 us | 122.7152 us | 2 |
| Mine | 148.1 us | 0.6086 us | 0.5692 us | 1 |
推荐阅读
- javascript - 使用 Lambda 处理多个 JSON 请求
- mongodb - 启动 mongo 守护程序时出现此错误,它说我没有创建 /data/db 目录,但创建了一个并将其设置为 db 路径
- r - 分箱颜色:格式化图例框架、标签和颜色
- reactjs - 使用 Jest 和 Enzyme 对模拟数据进行反应组件测试
- mysql - 带有 utf16 的 MySQL 列与 LIKE 运算符和全文索引存在问题
- java - 设置时区有效,但似乎倒退
- mongodb - 我想让 MongoEngine Query 只返回我想要的车辆,但它不起作用
- javascript - 初始化 AlpineJS 后更新存储不起作用
- vb.net - 文化从 12 小时制变为 24 小时制
- android - Android Studio 撰写预览不起作用