Unity中的随机数

一:前言

计算机的“随机数”并非真的“随机数”,而是伪随机数,是通过一系列算法,从一个起始数字开始按照一定规则算出来的
就好像函数F(x)一样,x就是随机数的种子,如果不设置种子,Unity会根据某种算法自动产生一个种子


二:使用

——InitState:设置随机数种子
相同的种子值对应着相同的随机数序列,如果不使用InitState设置,Unity会根据某种算法自动产生一个种子
例如设置种子为3,当使用Random.Range(min,max)后,不同机器产生的随机数序列每次是相同的,都为num1、num2、num3.....。只有当随机种子与上次的种子不相同时,才能随机出不同的随机结果


——Random.Range(min,max)
随机生成min到max之间的整数,不包含max


——Random.Range(minFloat,maxFloat)
随机生成minFloat到maxFloat之间的小数

### Unity生成随机数的方法 在 Unity 中,`UnityEngine.Random.Range()` 是最常用的生成随机数方法之一。此函数可以用于生成浮点型或整型的随机数值。 对于生成指定范围内不重复的随机数,可以通过移除已选中的元素来确保唯一性: ```csharp using System.Collections.Generic; using UnityEngine; public class UniqueRandomNumbers : MonoBehaviour { private List<int> Nums = new List<int>(); void Start() { // 初始化列表 for (int i = 0; i < 10; ++i) { Nums.Add(i); } for (int i = 0; i < 5; i++) { int id = UnityEngine.Random.Range(0, Nums.Count); // 随机下标 Debug.Log(Nums[id]); // 获取随机数 Nums.RemoveAt(id); // 移除该元素以防止重复选取[^1] } } } ``` 如果只需要简单的随机数而不需要考虑去重,则可以直接调用 `Random.Range(minValue,maxValue)` 方法,在给定区间内返回一个伪随机数。当参数为两个整数时会得到一个闭区间的整数;若是浮点数则获得开区间的实数[^4]。 为了保证每次运行程序都能有不同的种子序列从而改变产生的随机数列,可以在脚本开头加入如下语句初始化随机状态: ```csharp System.Random.InitState(System.Environment.TickCount); // 或者使用 C# 的 Random 类实例化对象 var randomInstance = new System.Random(); float value = randomInstance.NextDouble(); // 获得 [0.0, 1.0) 区间内的双精度浮点数 ``` 需要注意的是,Unity 自带的 `Random.Range()` 函数已经足够满足大多数情况下的需求,并且其内部实现了良好的分布特性,因此通常无需手动设置种子除非有特殊要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Bug.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值