Unity中random函数的简单使用

一:如果想要从一个数组中随机的取出一个数据,此时可以用Random函数,如:

var element = myArray[Random.Range(0, myArray.Length)];

注意这里取值的范围是0~Length-1

二:在不同概率下发生事件的场景:
一般将事件发生概率储存在一个数组中,比如float[]{0.5,0.25,0.2,0.05},此时随机生成一个介于0~1之间的数,与上述的值进行比较,很明显,这个随机数的值在0-0.5这个区间的概率最大。

 float Choose (float[] probs) {

        float total = 0;

        foreach (float elem in probs) {
            total += elem;
        }

        float randomPoint = Random.value * total;

        for (int i= 0; i < probs.Length; i++) {
            if (randomPoint < probs[i]) {
                return i;
            }
            else {
                randomPoint -= probs[i];
            }
        }
        return probs.Length - 1;
    }

Random.value :返回一个0~1之间的数。

三:利用曲线

public AnimationCurve curve;
float CurveWeightedRandom(AnimationCurve curve) {
    return curve.Evaluate(Random.value);
}

定义一个公有的AnimationCurve ,就可以对它进行编辑。
这里写图片描述
这里写图片描述
curve.Evaluate(Random.value)参数是随机出的一个值,可以认为是图中的横坐标,函数会返回它所对应的竖坐标的值,其中曲线越陡峭的地方代表发生的概率越大,越平坦的地方代表发生的概率越小。由于返回的是float类型,如果想要整形,Mathf.RoundToInt().

四:洗牌类任务

 void Shuffle (int[] deck) {
        for (int i = 0; i < deck.Length; i++) {
            int temp = deck[i];
            int randomIndex = Random.Range(0, deck.Length);
            deck[i] = deck[randomIndex];
            deck[randomIndex] = temp;
        }
    }
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity,可以使用Random类来生成随机数。Random类提供了多种方法来生成不同类型的随机数。在给定最小值和最大值的范围内,可以使用Random.Range方法来生成一个介于两个值之间的随机数。例如,可以使用以下代码段来生成一个介于1和10之间的随机数: ``` float randomValue = Random.Range(1f, 10f); ``` 这将生成一个浮点数类型的随机数,其值介于1和10之间。你也可以根据需要使用Random类的其他方法来生成整数、布尔值等不同类型的随机数。在游戏开发过程Random类常用于实现随机刷新怪物、随机生成地图等功能。通过调用Random类的方法,你可以方便地实现这些随机效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [unityrandom函数](https://blog.csdn.net/qq_20179331/article/details/130036337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Unity基本函数-Random随机数的生成](https://blog.csdn.net/xinzhilinger/article/details/109731861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值