目录
1. 问题分析与解决方案概述
在C#中生成一个包含1-100不重复随机数的数组是一个常见的编程问题,看似简单实则涉及多个需要考虑的技术点。本文将详细介绍几种不同的实现方法,分析它们的优缺点,并提供完整的代码示例。
问题核心需求:
- 生成长度为100的int数组
- 数组元素为1-100的整数
- 所有元素不重复
- 元素随机排列
2. 基础实现方法
2.1 Fisher-Yates洗牌算法
这是最经典且高效的随机排列算法,时间复杂度为O(n)。
using System;
public class RandomArrayGenerator
{
public static int[] GenerateUniqueRandomArray()
{
int[] array = new int[100];
Random random = new Random();
// 初始化有序数组
for (int i = 0; i < array.Length; i++)
{
array[i] = i + 1;
}
// Fisher-Yates洗牌算法
for (int i = array.Length - 1; i > 0; i--)
{
int j = random.Next(0, i + 1);
// 交换元素
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
}
// 使用示例
class Program
{
static void Main()
{
int[] randomArray = RandomArrayGenerator.GenerateUniqueRandomArray();
Console.WriteLine("生成的随机数组:");
for


1481

被折叠的 条评论
为什么被折叠?



