当前位置: 首页 > article >正文

力扣算法笔记——生成随机数组

题目信息: 给两个随机数和N,生成M到N的随机不重复数组,且M<N。

 示例:输入M =2, N=5, 输出 [4,3,2,5].

思路:洗牌算法,先遍历M到N之间所有的数字,将得到的结果存入一个集合中,将集合从后往前遍历,遍历时,在0和当前遍历到的列表最后一个下标i之间选择一个随机数J(从0到i),将随机数J下标对应的数字跟当前遍历到的下标i对换位置,打乱列表顺序

我直接在Unity里写了,代码如下:

    public int M;
    public int N;
    public int[] randomArray;
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
           randomArray=GenerateRandomArray(M,N);
        }
    }
    int[]  GenerateRandomArray(int m,int n)
    {
        if (n<=m)
        {
            return new int[0];
        }
        List<int> numbers = new List<int>();
        for (int i=m;i<=n;i++)
        {
            numbers.Add(i);
        }
        for (int i=numbers.Count-1;i>0;i--)
        {
            int j = Random.Range(0,i+1);
            int temp = numbers[i];
            numbers[i] = numbers[j];
            numbers[j] = temp;
        }

        return numbers.ToArray();
    }


http://www.kler.cn/a/372096.html

相关文章:

  • Flink中并行度和slot的关系——任务和任务槽
  • Git--tag标签远程管理
  • 12.25周三F34-Day36打卡
  • Flink调优----反压处理
  • 【设备 磁盘】重要备份存放U盘的风险 + winhex 磁盘清零(清理windows无法格式化的磁盘)
  • Ruby+Selenium教程
  • 从单体架构到云原生架构演化图示
  • M1 Pro MacBook Pro 上的奇遇:Rust 构建失败,SIGKILL 惊魂记
  • 「C/C++」C++17 之 std::variant 安全的联合体(变体)
  • 【FinalShell问题】FinalShell连接虚拟机超时问题
  • Javaweb项目发布到阿里云服务器
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解
  • AUTOSAT-PDUR模块
  • 【Linux】 su 和 sudo 的区别剖析
  • B计划在哪里?下一个10年我在哪里?
  • 基于uniapp微信小程序的餐厅预约点餐系统
  • NORDIC NPM1300是一款高度集成的电源管理集成电路
  • 封闭空间防碰撞无人机技术详解
  • ROC 曲线:医学研究中的得力助手
  • 操作系统学习笔记-2.3哲学家和管程问题
  • MaxKB: 一款基于大语言模型的知识库问答系统
  • WPF拖拽交互全攻略及实现自定义拖拽控件及数据交换技巧解析
  • 【SSM详细教程】-15-Spring Restful风格【无敌详细】
  • OpenCV基本操作(python开发)——(7)实现图像校正
  • ios 快捷指令扩展(Intents Extension)简单使用 swift语言
  • 北航软件工程考研难度分析!