我怎样才能得到一个随机系统.十进制的System.Random不能直接支持它.

推荐答案

编辑:已删除旧版本

这与Daniel的版本类似,但将提供完整的范围.它还引入了一种新的扩展方法来获得一个随机的"任意整数"值,我认为这很方便.

注意这里小数的分布是is not uniform.

/// <summary>
/// Returns an Int32 with a random value across the entire range of
/// possible values.
/// </summary>
public static int NextInt32(this Random rng)
{
     int firstBits = rng.Next(0, 1 << 4) << 28;
     int lastBits = rng.Next(0, 1 << 28);
     return firstBits | lastBits;
}

public static decimal NextDecimal(this Random rng)
{
     byte scale = (byte) rng.Next(29);
     bool sign = rng.Next(2) == 1;
     return new decimal(rng.NextInt32(), 
                        rng.NextInt32(),
                        rng.NextInt32(),
                        sign,
                        scale);
}

.net相关问答推荐

从没有流的EventStore中读取流不存在异常

使用EFCore.BulkExtensions库方法BulkInertOrUpdate时区分插入和更新的记录

Azure管道-使用.NET 8 RC2 SDK生成C#项目失败

如何将 signalR 添加到不同项目中的后台服务?

是否有内置方法将 nuget 包引用为 csproj 中的文件?

Npgsql Minimum Pool Size 似乎没有被考虑在内

将日期时间转换为日期格式 dd/mm/yyyy

如何调试 .NET 运行时中的内部错误?

Erlang 的让它崩溃的哲学 - 适用于其他地方吗?

StreamWriter.Flush() 和 StreamWriter.Close() 有什么区别?

为什么我得到 411 Length required 错误?

如何通过 LINQ 比较没有时间的 DateTime?

Java 和 .NET 技术/框架的类似物

我可以在没有两个查询的情况下通过布尔标准将 IEnumerable 一分为二吗?

VB.NET 与 C# 整数除法

形成两个列表并集的最简单方法

.Net 正则表达式:单词字符 \w 是什么?

使用语句与最终try

ToLowerInvariant() 有什么问题?

如何将 VB 项目转换为 C# 项目