根据随机数选择项目
本文关键字:项目 选择 随机数 | 更新日期: 2023-09-27 17:55:17
我正在做一个小游戏,根据随机数颁发奖品。 因此,当任务完成并且必须发放奖励时,我想随机生成奖品。 目前,我得到一个介于 1 到 500 之间的随机数,然后使用一个巨大的嵌套 if-else 语句根据结果分配奖品。 对我来说很明显,这是错误的方法,但是我不确定还有什么其他方法可以做到这一点。
有什么建议吗?
您可以使用奖品数组来保存您的价格,使用随机值作为数组的索引来选择奖品。
var prizes = new Prize[500];
//fill prizes
//randomly select index within prize array
如果有差距或只有几个数字赢得任何东西,请使用从整数到奖品的字典映射(如果它们键不存在,则什么都不做)。
你可以做很多事情。例如,您可以使用array
来存储奖品,并使用随机数作为数组的索引。然后,奖品将是存储在该索引处的数组中的任何内容。如果你想要更多的控制,你可以用List
做同样的事情。
使用一个列表,其中每个项目都有一个唯一的"最小值"和有关相关奖品的信息。然后在列表中找到具有最高值但仍低于您的随机数的项目。反之亦然。
最小值允许您为奖品提供不同的概率,而无需使用具有所有数字条目的巨型数组。概率由不同奖品之间的值距离定义。
在这个例子中,我假设你的奖品是字符串(但这也适用于对象)。创建一个列表并按以下方式将所有奖品添加到其中:
//using System.Collections.Generic;
var prices = new List<string>();
//Add all of your prices here
var random = new Random();
var price = prices[random.Next(0,prices.Count)];