Random的几个典型应用介绍如下。
1.随机数的获取:Random.Range(0,array.Length);在0到array.Length-1之间随机取一个数。在数组(比如说,物品数组)myArray中随机取一个数(随机取一件物品):
var index = Random.Range(0, myArray.Length);
myArray[index];
2.不同概率随机数的获取:
function Choose(probs: float[]) {
var total = 0;
for (elem in probs) {
total += elem;
}
var randomPoint = Random.value * total;
for (i = 0; i < probs.Length; i++) {
if (randomPoint < probs[i])
return i;
else
randomPoint -= probs[i];
}
return probs.Length - 1;
}
其中probs是各elem取得的概率,total是它们相加的总和(可以不为1),Random.value随机获取一个概率数,最后一个return是防止randomPoint=total(等于1)的情况,第二个for循环无法为此时的randomPoint找到一个匹配值。
Shffling a List——随机出一个列表,比如洗牌。方法是把牌堆里的每张牌按序和一张随机位置的牌交换顺序:
function Shuffle(deck: int[]) {
for (i = 0; i < deck.Length; i++) {
var temp = deck[i];
var randomIndex = Random.Range(0, deck.Length);
deck[i] = deck[randomIndex];
deck[randomIndex] = temp;
}
}
3.无重复的选择一组随机物品集合:有很多应用场合,比如无重复选择一组NPC的出生地点,假设有10个出生点,5个NPC,于是要求随机从10个出生点筛选出5个无重复的出生点,第一个被选出的地点概率为5/10,第二个为4/9,依次类推。