来自字典和元组的C#随机值

时间:2014-06-08 00:05:31

标签: c# random dictionary tuples

我有以下代码,需要从字典中获取包含字符串“Region_1”的随机项。

public static Dictionary<int, Tuple<string, int, CurrencyType>> ItemArray = new Dictionary<int, Tuple<string, int, CurrencyType>>()
{
     { 0xB3E, new Tuple<string, int, CurrencyType>("Region_1", 1500, CurrencyType.Fame) }
};

public static int GenerateItemID(string ShopID)
{
     var GeneratedItem = ItemArray.ElementAt(new Random().Next(0, ItemArray.Count)).Key;

}

如何选择?

1 个答案:

答案 0 :(得分:3)

这对所有这些都不可能有效......

首先在课程级别创建一个静态Random ...如果您在短时间内经常运行查询,这将阻止non-random behaviour ...(它来自一个种子离散时钟)

static Random rnd = new Random();

然后:

var item = ItemArray.Values
   .Where(t => t.Item1 == ShopID)
   .OrderBy(_ => rnd.Next())
   .FirstOrDefault()