【问题标题】:Random number that divides by 5除以 5 的随机数
【发布时间】:2011-06-14 22:28:26
【问题描述】:
Random random = new Random();
int randomx = random.Next(0, 240);

这就是我获取随机数的方式,从 0 到 240,如何只获得除以 5 的积分? (包括 0 个)

0、5、10、15、20、25 .. 240

【问题讨论】:

  • 什么,没有人使用x = 1; while ((x % 5) > 0) x = random.Next(0,240); 解决方案? :-)
  • @paxdiablo:不!你是第一个!
  • @paxdiablo:理论上,您的代码可能会在循环中等待很长时间。
  • 这个问题以前有人问过,请搜索(或学习这样做)。

标签: c# algorithm random


【解决方案1】:

这个怎么样:

Random random = new Random();
return random.Next(0, 48) * 5;

或者,如果您需要包含 240 个,如您的列表所示:

Random random = new Random();
return random.Next(0, 49) * 5;

【讨论】:

  • 谢谢...不敢相信答案这么简单。
  • +1,但我认为如果你想包含 240,你的数字应该是 49 而不是 48。它是 独家 在顶端,所以你的最高数字'现在得到的是 47x5 或 235。已为您修复。
  • 我更喜欢自我记录:random.Next(0,240/5 +1) * 5 我懒得自己计算 49,这样可以更清楚 49 的实际含义(并且常量表达式可能会编译为单个数字无论如何)
  • @slebetman:这并不比单号版本更能自我记录。如果您想自我记录,请将数字替换为常量名称。
  • 我喜欢的是#define FORTY_NINE 49。我总是从那些人那里得到一个很好的笑声,试图弄清楚他们是如何得出结论的,它更具可读性。或者也许这只是为了以防FORTY_NINE 的值发生变化:-)
【解决方案2】:
Random random = new Random();
int randomx = random.Next(0, 48) * 5;

【讨论】:

  • 让我们以重复的形式关闭它:p(我知道,它只是晚了几秒钟)
【解决方案3】:

这是一种(非常糟糕,因此是社区 wiki)的方法:

Random random = new Random();
int randomx = 1;
while ((randomx % 5) > 0)
    randomx = random.Next (0,240);

:-)

请随意将此答案否决。真的只是为了防止别人发帖。

【讨论】:

  • 好的。谁他妈给我投了赞成票?这根本没有用!除了作为做什么的指标。
  • 不能让这个答案被埋没!
  • 哦,好吧,至少它永远不会超过公认的答案。我想是这样的:-)
【解决方案4】:

response to paxdiablo

警告 幽默代码不太适合生产环境

public  static IEnumerable<int> RandomGen(int minValue, int maxValue)
{
    var random = new Random();
    while (true) yield return random.Next(minValue, maxValue);
}

public static IEnumerable<int> RandomGen(int minValue, int maxValue, params Func<int, bool>[] predicates)
{
    return RandomGen(minValue, maxValue)
        .Where(rnd => predicates.Aggregate(true, (a, pred) => a && pred(rnd)));
}

这样就可以了

foreach (var x in RandomGen(0, 240, r => (r%5)==0))
{
// use x
}

(请不要开枪)

【讨论】:

    猜你喜欢
    • 2012-05-05
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多