gpt4 book ai didi

c# - 在 C# 中实现 "percent chance"

转载 作者:可可西里 更新时间:2023-11-01 09:06:10 30 4
gpt4 key购买 nike

我在 C# 代码中需要一些关于 percent chance 的帮助。假设我有一个从 1 到 100 的 for 循环,在那个循环中我有一个“if”代码,我想执行 70% 次(随机)。我将如何实现这一目标?所以像这样:

static void Main(string[] args)
{
var clickPercentage = 70;

for (int i = 0; i < 100; i++)
{
if (chance)
{
//do 70% times
}
}
}

所以对于最上面的例子,如果代码被命中的几率是 70%,我的例子大约是 70 次。

我尝试过的事情:(远不及 70%,更像是 1% 或 2% 的机会)

static void Main(string[] args)
{
var clickPercentage = 70;

for (int i = 0; i < 100; i++)
{
var a = GetRadnomNumber(1, clickPercentage);
var b = GetRadnomNumber(1, 101);

if (a <= b)
{
Console.WriteLine($"Iteracija {i} - {b} <= {a}");
}
}
}

public static int GetRadnomNumber(int min, int max)
{
var random = new Random();
var retVal = random.Next(min, max);

return retVal;
}

最佳答案

使用 Random class .

您可以使用 Random.Next(100)获取 0 到 99 之间的随机 int:

public static Random RandomGen = new Random();
.....

int clickPercentage = 70;
for (int i = 0; i < 100; i++)
{
int randomValueBetween0And99 = RandomGen.Next(100);
if (randomValueBetween0And99 < clickPercentage)
{
//do 70% times
}
}

重要的是您不要在循环中创建随机实例,因为它的默认构造函数使用当前时间作为种子。这可能会导致循环中出现重复值。这就是我使用 static 字段的原因。您还可以将 Random 实例传递给方法,以确保调用者负责生命周期和种子。有时使用相同的种子很重要,例如重复相同的测试。

关于c# - 在 C# 中实现 "percent chance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37858551/

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