gpt4 book ai didi

c# - 我如何修改这个随机双生成器以返回更多的零

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:34 25 4
gpt4 key购买 nike

我有这个扩展方法,给定一个最小和最大 double ,在它们之间生成一个 double 。

    public static double NextDouble(this Random random, double minValue, double maxValue)
{
return random.NextDouble() * (maxValue - minValue) + minValue;
}

我主要使用这个扩展方法来生成随机的美元金额,有时 0 美元是一个 OK 值!也就是说,我需要增加返回 0 的几率。更具体地说,如果我尝试以下操作:

        Random rando = new Random();
List<double> doubles = new List<double>();
for (int i = 0; i < 100000; i++)
{
double d = rando.NextDouble(0, .25);
Console.WriteLine(d.ToString());
}

我没有得到一个零。

我想到的一个不太理想的解决方案是我可以捕获每个小于 1 的值并返回 0。

public static double NextDouble(this Random random, double minValue, double maxValue)
{
double d = random.NextDouble() * (maxValue - minValue) + minValue;

if (d < 1)
{
return 0;
}

return d;
}

这显然消除了返回小于 1 的值(.25、.50、.125 等)的能力。我正在寻找一些聪明的方法来解决这个问题!

最佳答案

解决此问题的一种简单方法是生成两个随机数:第一个确定是否返回 0,如果不是,则返回第二个数字。比如说你想要 5% 的机会返回零。生成 1 到 100 之间的随机整数,如果小于或等于 5,则简单地返回零。

if (minValue <= 0.0 && 0.0 <= maxValue) 
{
var shouldWeReturnZero = rando.Next(1, 101) <= 5;
if (shouldWeReturnZero)
return 0;
}

否则,使用您已有的代码生成实际随机数。

关于c# - 我如何修改这个随机双生成器以返回更多的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330156/

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