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

Unity常用随机数算法

Unity的Random.Range介绍

有两个重载:

        如果参数存在至少一个浮点数那么将会触发public static  float Range(float minInclusive, float maxInclusive); 返回一个范围内的浮点数(包含首尾)

        如果参数都是整形则触发public static  int Range(int minInclusive, int maxExclusive) 返回一个整形(包含首但不包含尾);

 /// <summary>
 /// 在[start,end]整数数组中获取count数量的随机不重复数据(首位都包含)
 /// 例如[-1,100]拿5个不重复随机数可能拿到0,77,2,55,11
 /// </summary>
 /// <param name="start"></param>
 /// <param name="end"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 /// <exception cref="ArgumentException"></exception>
 private int[] GetRandomArray(int start, int end, int count)
 {
     if (start >= end)
     {
         throw new ArgumentException("Start must be less than end.");
     }

     int legalCount = end - start + 1;
     if (legalCount < count||count==0)
     {
         throw new ArgumentException("The count is greater than the number of available values.");
     }

     // 使用数组存储可用数字
     int[] availableNumbers = new int[legalCount];
     for (int i = 0; i < legalCount; i++)
     {
         availableNumbers[i] = start + i;
     }

     int[] numbers = new int[count];

     //  洗牌算法
     for (int i = 0; i < count; i++)
     {
         // 在每次迭代中,从 i 到 legalCount 范围随机选择一个索引
         int tempIndex = UnityEngine.Random.Range(i, legalCount);//0 1

         // 将随机选到的数字存入结果数组
         numbers[i] = availableNumbers[tempIndex];

         // 将选中的数字移到已选区域(位置 i),下次循环会来到后一个位置
         availableNumbers[tempIndex] = availableNumbers[i];
     }

     return numbers;
 }


http://www.kler.cn/news/309500.html

相关文章:

  • linux-Shell 编程-常用 Shell 脚本技巧
  • Python--数据格式转换
  • 在react中 使用redux
  • ubuntu安装wordpress(基于LNMP环境)
  • GBase8c主备版500升级步骤
  • 演示:基于WPF自绘的中国省份、城市、区县矢量地图
  • android 识别设备是否为模拟器
  • MySQL 按照条件(分组)只取一个形成列表 group max
  • PostgresML:通过 PostgreSQL 集成简化 AI 模型部署
  • git reset 几点疑问
  • 50ETF期权可以当天买卖吗?
  • 2024年10月蓝桥杯青少组的Stema考试开始报名
  • React两种路由模式的实现原理
  • 高防IP是如何防御攻击
  • 苹果电脑也可以清除垃圾吗?苹果电脑清理垃圾用什么软件哪个好?
  • 运用Java实现倒计时功能
  • 工业智能网关未来工业智能化的核心枢纽-天拓四方
  • 战神诸神黄昏9月19日登录PC端! 手机怎么玩战神诸神黄昏
  • 记录开发一个英语听力训练网站
  • 中断和异常处理
  • 【信息论基础第二讲】离散信源的数学模型及其信息测度包括信源的分类、信源的数学模型、离散信源的信息测度、二元信源的条件熵联合熵
  • 相亲交友小程序:轻松找到你的另一半
  • postgresql|数据库|pg_repack和idle_in_transaction_session_timeout参数的关系
  • rabbitmq备份还原
  • Qt QSerialPort串口编程
  • CommaSeparatedListOutputParser
  • Haption力反馈设备在机器人遥操作中的应用优势
  • TCP并发服务器的实现
  • 某思CMS V10存在SQL注入漏洞
  • 深入理解Linux中的多路复用技术:select、poll与epoll