c# - 如何在 C# 中生成 0 到 1 之间的随机数?

标签 c# .net random

我想获得 1 和 0 之间的随机数。但是,我每次都得到 0。有人能解释我为什么总是得到 0 的原因吗? 这是我试过的代码。

Random random = new Random();
int test = random.Next(0, 1);
Console.WriteLine(test);
Console.ReadKey();

最佳答案

根据documentation , Next 返回一个介于(含)最小值和(不含)最大值之间的整数随机数:

Return Value

A 32-bit signed integer greater than or equal to minValue and less than maxValue; that is, the range of return values includes minValue but not maxValue. If minValue equals maxValue, minValue is returned.

唯一满足的整数

0 <= x < 1

0,因此您总是得到值 0。换句话说,0 是半闭区间 [0, 1) 内的唯一整数。

因此,如果您实际上对整数值 01 感兴趣,则使用 2 作为上限:

var n = random.Next(0, 2);

如果你想得到 0 到 1 之间的小数,试试:

var n = random.NextDouble();

关于c# - 如何在 C# 中生成 0 到 1 之间的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41924871/

相关文章:

c# - 使用我的 UserId Guid 作为我的电子邮件确认链接是否安全?

c# - 基于 32 位或 64 位的不同结构属性

.net - 显示 “you have crashed, we are sorry …”弹出窗口时完全停止应用程序

.net - kendo ui 网格过滤器不区分大小写

.net - 使用 .NET System.IO File.Copy 按顺序复制文件

c# - 使用 C# 在本地注销 Windows 用户

c# - (C#) 如何使用Mono.Cecil判断是否是枚举类型?

java - 仅使用素数播种随机数生成器有什么好处?

java - 实现生成 HttpSession key

c++ - std::seed_seq 背后的算法是否已定义?