gpt4 book ai didi

c# - 返回特定键的任何值的二值字典

转载 作者:行者123 更新时间:2023-11-30 18:54:11 25 4
gpt4 key购买 nike

我需要创建一个字典,每个键有 2 个值,并且它必须以相同的概率返回 2 个值之一。

例子:

myDicry
{
key = "A", value1=15, value2=56;
}

int firstCall = myDicry["A"]; // = 15
int secondCall = myDicry["A"]; // = 56

最佳答案

可以写一个 IDictionary<TKey, TValue>以这种方式运行的实现,但这不是一个好主意:大多数人会发现集合类的非确定性索引器非常不直观。

相反,我建议您将此作为键的 的责任,而不是字典本身。一个选择是编写一个自定义类型,它能够以相等的概率从一组可能性中进行选择。例如:

public class UnbiasedRandomPicker<T>
{
private readonly Random _rand = new Random();
private readonly T[] _possibilities;

public UnbiasedRandomPicker(params T[] possibilities)
{
// argument validation omitted
_possibilities = possibilities;
}

public T GetRandomValue()
{
return _possibilities[_rand.Next(_possibilities.Length)];
}
}

然后你可以像这样使用字典:

var dict = new Dictionary<string, UnbiasedRandomPicker<int>>
{
{"A", new UnbiasedRandomPicker<int>(15, 56)},
{"B", new UnbiasedRandomPicker<int>(25, 13)}
};

int randomValueFromA = dict["A"].GetRandomValue();

关于c# - 返回特定键的任何值的二值字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com