当前位置: 首页 > 知识库问答 >
问题:

为什么C#的随机下限是包含的,而上限是排他的?

梁丘波鸿
2023-03-14
Random rnd = new Random();
int rndNumber = rnd.Next(0,101);

但实际发生的情况是,rndNumber包含一个0到100之间的随机整数。为什么会这样呢?

我明白上限是排他性的,但那为什么下限是包容性的呢?为什么这不一致呢?

共有1个答案

上官淮晨
2023-03-14

这种方法与使用零作为初始元素的编号方案是一致的。这在几种情况下是很方便的,因为您不需要做任何算术,也不需要面对罕见的偏离一的错误,例如

选择数组的随机元素时:

var rndElement = myArray[rnd.Next(0, myArray.Length)];

当您在几个点上拆分一个间隔,并从每个子间隔中选取随机元素时:

var endpoints = new[] {0, 10, 17, 36, 80};
for (int i = 0 ; i+1 < endpoints.Length ; i++) {
    var from = endpoints[i];
    var to = endpoints[i+1];
    Console.WriteLine("({0}..{1}) : {2}", from , to, rnd.Next(from, to));
}
 类似资料:
  • 是要有: 看起来像下面的C代码?

  • 我正在尝试实现合并排序,其中原始数组和辅助数组为每个递归交替。它基于Java代码。描述如下(链接): 改进。通过对实现进行一些经过仔细考虑的修改,我们可以大幅缩短mergesort的运行时间。 [...] 消除到辅助阵列的副本。可以消除复制到用于合并的辅助阵列所需的时间(但不是空间)。为此,我们使用了两个sort方法调用,一个调用从给定数组中获取其输入,并将排序后的输出放入辅助数组中;另一个从辅助

  • 我不能为我的生活,弄清楚为什么这将不调用用户输入正确?用户应该给出一个范围的上限和下限,然后当他们提交时,他们会得到一个介于这两个数字之间的随机数。我假设问题是我调用“.value”的时候,但我不知道有什么其他的方法,所以任何帮助都是非常感谢的。

  • 我发现这个问题和另一个问题非常有趣,至少对我来说,它引出了几个问题: 这是一个相当开放的问题,局限于哪里?显然,GUI应用程序不适用于解决方案或IDE替换: 图形界面和调试器支持超出了范围。JShell API旨在允许在IDE和其他工具中使用JShell功能,但JShell工具并不打算成为IDE。 维恩图或其他视觉效果的加分。 当然,代码片段的大小应该受到限制。我更多的是问什么样的问题不能用片段来

  • 为什么它的输出是无限的?有人知道应该做些什么来使这个有限吗?

  • 问题内容: 我从这里阅读了一篇有趣的文章/主题/讨论,并且遇到了以下问题: Java / C#泛型的局限性是什么? C ++模板有什么功能,而Java / C#泛型则没有呢? 编辑1 Eric Lippert推荐的其他问题 C#泛型可能有哪些模式,而C ++模板却没有? C#的真实泛型类型和Java的类型擦除泛型类型之间有什么区别? 问题答案: 首先,您可能想阅读我在2009年关于该主题的文章。