根据随机数选择项目

时间:2011-05-08 16:40:05

标签: c#

我正在开发一款基于随机数奖励奖品的小型游戏。因此,当任务完成并且必须分发奖励时,我想随机生成奖品。目前我得到1到500之间的随机数,然后使用巨大的嵌套if-else语句根据结果分配奖品。对我来说很明显,这是错误的做法,但是我不确定这可能做到的其他方式。

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

您可以使用奖品数组来保存价格,使用随机值作为数组的索引来挑选奖品。

var prizes = new Prize[500];
//fill prizes
//randomly select index within prize array

如果有间隙或只有少数数字赢得任何东西,请使用从整数到奖品的字典映射(如果它们的密钥不存在,则使用任何内容)。

答案 1 :(得分:1)

你可以做很多事情。例如,您可以使用array来存储奖品,并使用随机数作为数组的索引。然后奖品将是存储在该索引处的阵列中的任何内容。如果您想要更多控制权,可以使用List执行相同操作。

答案 2 :(得分:1)

使用列表,其中每个项目都具有唯一的“最小值”以及有关相关奖品的信息。然后在列表中找到具有最高值但仍低于随机数的项目。反之亦然。

最小值允许您在不使用具有所有数字条目的巨型数组的情况下为奖品提供不同的概率。概率由不同奖品之间的值的距离定义。

答案 3 :(得分:1)

在这个例子中,我假设你的奖品是字符串(但这也适用于对象)。 创建一个列表并按以下方式将所有奖品添加到其中:

//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)];