1
52
要获得介于1和n(包括1和n)之间的随机整数值,可以使用以下方法。
|
2
65
正如已经多次指出的那样,编写这样的代码的建议是有问题的:
原因是
以下代码解决了此问题:
我用这两种方法组合了一个简单的程序来生成25个1到100之间的随机整数。输出结果如下:
|
3
32
使用 System.Random :
|
4
5
到目前为止,所有的答案都有问题或错误(复数,而不仅仅是一个)。我会解释的。但首先,我要赞扬丹涛的洞察力,即使用静态变量来记住生成器变量,因此多次调用它不会重复相同的操作,而且他给出了非常好的解释。但他的代码和其他大多数人一样,也有同样的缺陷,正如我现在所解释的。 微软让他们的next()方法变得很奇怪。Min参数是预期的包含最小值,但Max参数是 排他性 最大值,如人们所料。换句话说,如果你通过min=1和max=5,那么你的随机数将是1、2、3或4中的任意一个,但它永远不会包括5。这是所有使用Microsoft的random.next()方法的代码中两个潜在错误中的第一个。 对于一个 简单的 回答(但仍然存在其他可能但罕见的问题),然后您需要使用:
(我喜欢使用)
我看到这个方法有两个潜在的问题,但对于大多数应用来说它是合适的(并且是正确的)。所以如果你想要 简单的 解决方案,我相信这是正确的。 我在这个函数中看到的唯一两个问题是: 1:当max=Int32.MaxValue时,所以加1会产生数字溢出。尽管如此,这将是罕见的,这仍然是可能的。 2:当最小值>最大值+1时。当min=10且max=5时,下一个函数将抛出一个错误。这可能是你想要的。但也可能不是。或者考虑当最小值为5,最大值为4时。通过添加1,5将传递给下一个方法,但它不会引发错误,当它确实是一个错误时,但我测试的Microsoft.NET代码返回5。因此,当max=min.时,它实际上不是一个“独占”的max,但是当random.next()函数的max<min时,它抛出argumentOutOfRangeException。因此,微软的实现在这方面也确实不一致,而且有缺陷。 您可能只想在最小值和最大值之间交换数字,这样就不会产生错误,但这完全取决于需要什么。如果您希望在无效值上出现错误,那么在我们的代码中,当Microsoft的独占最大值(max+1)等于最小值时,最好也抛出错误,在这种情况下,MS不会出错。 处理max=int32.maxvalue时的工作有点不方便,但我希望发布一个全面的函数来处理这两种情况。如果你想要不同于我编码的行为,那就适合你自己。但要注意这两个问题。 快乐编码! 编辑: 所以我需要一个随机整数生成器,我决定对它进行“正确”编码。因此,如果有人想要完整的功能,这里有一个真正有效的功能。(但它并不是只有两行代码才能赢得最简单的奖品。但也不太复杂。)
|
5
4
|
6
2
Microsoft示例 Rnd Function https://msdn.microsoft.com/en-us/library/f7s023d2%28v=vs.90%29.aspx 1-初始化随机数生成器。
2-生成1到6之间的随机值。
|
7
1
如果你用的是约瑟夫的回答,这是一个很好的回答,你就这样把这些话背对背地说:
然后结果可能会反复出现,因为它处理调用的速度非常快。这在08年可能不是问题,但由于处理器现在速度快得多,该功能不允许系统时钟在进行第二次调用之前有足够的时间进行更改。 因为system.random()函数是基于系统时钟的,所以我们需要留出足够的时间让它在下次调用之前更改。实现这一点的一种方法是将当前线程暂停1毫秒。见下例:
|
8
1
您应该只创建一次伪随机数生成器:
然后,如果一个整数满足您的需要,您可以使用:
随你的喜好。使用wrapper函数是合理的,因为最大值是排他的-我知道随机数是这样工作的,但是.next的定义很混乱。 在我看来,每次需要一个数字时都创建一个生成器是错误的;伪随机数不能这样工作。 首先,您会遇到初始化问题,这在其他回复中已经讨论过。如果初始化一次,就没有这个问题。 第二,我一点也不确定你是否得到了一个有效的随机数序列;相反,你得到了多个不同序列的第一个数的集合,这些序列是根据计算机时间自动播种的。我不确定这些数字是否能通过确认序列随机性的测试。 |
9
0
|
10
0
仅供参考,用于RND和随机化的vb网络功能定义(应给出基本(1980年)的相同结果,之后的所有版本为:
而随机类是:
|
11
-5
[博伊斯] 这是最好的办法,从头开始: |
ecology · 基于R中随机生成数集的子集列 2 年前 |
Alan Jones · 使用random从列表创建动态列表 2 年前 |
breking bed · 单击按钮时如何随机选择唯一编号 2 年前 |
Carrot Man · 如何让熊猫数据框随机填充1和0? 2 年前 |
Justin Arnold · 范围内的随机数不是随机数 2 年前 |
Menna Magdy · 如何使用非模型字段进行过滤? 2 年前 |