我早些时候问过这个问题,但措辞都错了,因此试图使其更加清晰。
因此,要把它放在上下文中,我目前正在接受培训,成为一名软件开发人员,而且我一直在努力理解C#中的概率概念,我对C#完全陌生,并且发现这是最好的方法之一学习如何开发新的编码语言时,我可以找到获得支持的站点。
我正在尝试创建一个程序,该程序用作使用数字-1至3的随机数生成器,并为每个数字设置单独的概率。
我已经完全创建了可以随机打印-1到3范围内的4个数字的代码,但是我目前正努力了解如何分别对每个数字实现概率函数。
这是我当前的代码,用作随机数生成器,以平等的机会提取数字:
while (again)
{
List<int> scores = new List<int>();
Random generator = new Random();
for (int i = 0; i < 4; i++)
{
int score = generator.Next(-1, 4);
Console.WriteLine(score);
scores.Add(score);
}
ConsoleKeyInfo keyPressed = Console.ReadKey();
Console.Clear();
if (keyPressed.Key != ConsoleKey.Spacebar)
{
break;
}
}
我需要设置数字的概率是: [0.01,0.3,0.58,0.1,0.01] 到数字 [-1,0,1,2,3]
最初,我想为每个部分使用一个新的randomnumber类,以将其定义为概率,但不确定如何在C#中使用概率。
我知道我早些时候发布了这篇文章,但是我并没有写出应有的字眼,而是在询问诸如最好的方法或最有效的方法之类的东西,而当我真正需要知道的是概率如何时,这些方法就会被否定实际上是用C#创建的。
由于我尝试实现它的所有方法均无效,并且我在网上找到了其他解决方案,所以我将不胜感激,我不确定如何提取其他实际应用概率函数的代码,我知道还有其他代码可以提供完整的解决方案,但是我希望能够在自己的解决方案中实现一段代码,该代码将起作用,以便我可以更好地了解此函数的工作原理。
对此的帮助将不胜感激,如果在一天之内两次发表类似的帖子对用户来说很烦人,我深表歉意,但是当我试图了解如何做到这一点时,我确实感到很困惑。
谢谢!
编辑:这是一个示例代码,我根据注释中的建议尝试将其实现到我的代码中,该代码基于我从此处在线找到的代码: https://forum.unity.com/threads/making-random-range-generate-a-value-with-probability.336374/
{
while (again)
{
struct RandomSelection {
public float probability;
List<int> scores = new List<int>();
Random generator = new Random();
for (int i = 0; i < 4; i++)
{
int score = generator.Next(
new RandomSelction(-1, 0, .01f),
new RandomSelction(0, 1, .3f),
new RandomSelction(1, 2, .58f),
new RandomSelction(2, 3, .1f),
new RandomSelction(3, 4, .01f)
);
}
int GetRandomValue(params RandomSelection[] selections)
{
float rand = Random.value;
float currentProb = 0;
foreach (var selection in selections)
{
currentProb += selection.probability;
if (rand <= currentProb)
return selection.GetValue();
}
Console.WriteLine(score);
scores.Add(score);
}
ConsoleKeyInfo keyPressed = Console.ReadKey();
Console.Clear();
if (keyPressed.Key != ConsoleKey.Spacebar)
{
break;
}
}
}
}