跳過到頁腳內容
.NET幫助

C# 隨機整數(對於開發者的運行原理)

在 C# 中创建随机整数,开发人员可以利用 Random 类,这是生成随机数的软件编程中的基础工具。 随机整数生成是编程中的一个关键概念,可以执行统计模拟、游戏开发、模型化不可预测事件、生成动态内容以及实现具有随机输入的算法等任务。 它在许多场景中非常有用,从创建随机游戏关卡,到重新排列列表中的项目或执行统计分析。

如何使用 C# 随机整数

  1. 創建一個新的 C# 項目。
  2. 构造 Random 类的一个实例。
  3. 使用 Next() 方法生成随机整数。
  4. 如有需要,定义随机整数的范围。
  5. 在程序中使用随机整数,并在需要时重复此过程。

什么是 C# 随机整数

Random 类 提供了一种简单且可适应的方式来在 C# 中生成随机数。 Next()Next(minValue, maxValue) 方法提供方便范围的伪随机数生成器。 此外,Random 类允许定制种子值,便于测试和调试时的重复随机序列。

在本文中,我们将探讨 Random 类在 C# 中的功能,包括使用方法、安全预防措施及生成随机数的最佳实践。 我们还将展示各种场景和示例,展示开发人员如何利用随机化来增强他们的 C# 程序。 了解 C# 随机整数生成可以让开发人员在应用程序中引入不可预测性,从而最终提升用户体验并推动软件开发的创新。

基本随机整数生成

Next() 方法可以在没有参数的情况下使用,以最简单的方式生成非负随机整数。

// Create an instance of Random
Random random = new Random();
// Generate a random integer
int randomNumber = random.Next();
// Create an instance of Random
Random random = new Random();
// Generate a random integer
int randomNumber = random.Next();
' Create an instance of Random
Dim random As New Random()
' Generate a random integer
Dim randomNumber As Integer = random.Next()
$vbLabelText   $csharpLabel

NextDouble() 方法可以生成 0.0 和 1.0 之间的随机浮点数。

范围内的随机数

使用 Next(minValue, maxValue) 方法可以生成位于指定范围内的随机数。 此方法返回一个大于或等于 minValue 且小于 maxValue 的随机数。

// Create an instance of Random
Random rnd = new Random();
// Generate a random integer value between 1 and 100
int randomNumberInRange = rnd.Next(1, 101);
// Create an instance of Random
Random rnd = new Random();
// Generate a random integer value between 1 and 100
int randomNumberInRange = rnd.Next(1, 101);
' Create an instance of Random
Dim rnd As New Random()
' Generate a random integer value between 1 and 100
Dim randomNumberInRange As Integer = rnd.Next(1, 101)
$vbLabelText   $csharpLabel

小于最大值的随机整数

如果您只需要一个小于指定最大值的随机数,请使用 Next(maxValue) 方法。 它返回一个小于提供的 maxValue 的随机整数。

// Create an instance of Random
Random random = new Random();
// Generate a random number between 0 and 99
int randomNumberLessThanMax = random.Next(100);
// Create an instance of Random
Random random = new Random();
// Generate a random number between 0 and 99
int randomNumberLessThanMax = random.Next(100);
' Create an instance of Random
Dim random As New Random()
' Generate a random number between 0 and 99
Dim randomNumberLessThanMax As Integer = random.Next(100)
$vbLabelText   $csharpLabel

生成随机字节

NextBytes(byte[] buffer) 方法允许您用随机值填充字节数组,这对于创建随机二进制数据很有用。

// Create an instance of Random
Random random = new Random();
// Create a byte array
byte[] randomBytes = new byte[10];
// Fill the array with random byte values
random.NextBytes(randomBytes);
// Create an instance of Random
Random random = new Random();
// Create a byte array
byte[] randomBytes = new byte[10];
// Fill the array with random byte values
random.NextBytes(randomBytes);
' Create an instance of Random
Dim random As New Random()
' Create a byte array
Dim randomBytes(9) As Byte
' Fill the array with random byte values
random.NextBytes(randomBytes)
$vbLabelText   $csharpLabel

自定义种子值

使用特定的种子值初始化 Random 实例可以实现一致的运行。 使用相同的种子对于重复结果很有帮助,例如测试场景。

// Initialize Random with a seed value
Random random = new Random(12345);
// Generate a random integer
int randomNumberWithSeed = random.Next();
// Initialize Random with a seed value
Random random = new Random(12345);
// Generate a random integer
int randomNumberWithSeed = random.Next();
' Initialize Random with a seed value
Dim random As New Random(12345)
' Generate a random integer
Dim randomNumberWithSeed As Integer = random.Next()
$vbLabelText   $csharpLabel

线程安全的随机生成

在多线程环境中,线程安全的随机数生成是至关重要的。 一种常见的技术是使用 ThreadLocal 类为每个线程创建唯一的 Random 实例。

// Create a thread-local Random instance
ThreadLocal<Random> threadLocalRandom = new ThreadLocal<Random>(() => new Random());
// Generate a random number safely in a multi-threaded environment
int randomNumberThreadSafe = threadLocalRandom.Value.Next();
// Create a thread-local Random instance
ThreadLocal<Random> threadLocalRandom = new ThreadLocal<Random>(() => new Random());
// Generate a random number safely in a multi-threaded environment
int randomNumberThreadSafe = threadLocalRandom.Value.Next();
' Create a thread-local Random instance
Dim threadLocalRandom As New ThreadLocal(Of Random)(Function() New Random())
' Generate a random number safely in a multi-threaded environment
Dim randomNumberThreadSafe As Integer = threadLocalRandom.Value.Next()
$vbLabelText   $csharpLabel

高级随机技术

对于生成具有特定分布(例如高斯分布)的随机数,您可能需要使用第三方库或自定义方法。

// Example of generating random numbers with a Gaussian distribution using MathNet.Numerics
using MathNet.Numerics.Distributions;

// Parameters for the Gaussian distribution: mean and standard deviation
double mean = 0;
double standardDeviation = 1;

// Generate a random number with a Gaussian distribution
double randomNumberWithGaussianDistribution = Normal.Sample(new Random(), mean, standardDeviation);
// Example of generating random numbers with a Gaussian distribution using MathNet.Numerics
using MathNet.Numerics.Distributions;

// Parameters for the Gaussian distribution: mean and standard deviation
double mean = 0;
double standardDeviation = 1;

// Generate a random number with a Gaussian distribution
double randomNumberWithGaussianDistribution = Normal.Sample(new Random(), mean, standardDeviation);
' Example of generating random numbers with a Gaussian distribution using MathNet.Numerics
Imports MathNet.Numerics.Distributions

' Parameters for the Gaussian distribution: mean and standard deviation
Private mean As Double = 0
Private standardDeviation As Double = 1

' Generate a random number with a Gaussian distribution
Private randomNumberWithGaussianDistribution As Double = Normal.Sample(New Random(), mean, standardDeviation)
$vbLabelText   $csharpLabel

这些例子展示了在 C# 中使用 Random 类生成随机数的各种应用。 根据您的具体要求和情况选择最符合您需求的方法。

IronPDF 是什么?

IronPDF 是一个流行的 C# 库,提供了创建、编辑和修改 PDF 文档的多种功能。 虽然其主要用途是与 PDF 相关的操作,但它也可以与 C# 一起用于各种任务,如将随机整数插入 PDF 文档。

IronPDF 的一个关键功能是其 HTML 到 PDF 转换 功能,它保留布局和样式,非常适合报告、发票和文档。 您可以轻松地将 HTML 文件、URL 和 HTML 字符串转换为 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a ChromePdfRenderer instance
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 功能:

  • IronPDF 允许开发人员从 HTML 内容创建高质量的 PDF 文档,非常适合存档文档、生成报告和抓取网页。
  • 轻松将 JPEG、PNG、BMP 和 GIF 等图像文件转换为 PDF 文档。 您可以从基于图像的内容(如扫描文档或照片)创建可搜索和可编辑的 PDF 文件。
  • 它提供全面的 PDF 操作和修改功能,使您可以以编程方式拆分、旋转和重新排列 PDF 页面。 您可以向现有 PDF 添加文本、图像、注释和水印。
  • IronPDF 支持处理 PDF 表单,使开发人员能够填写表单字段、检索表单数据并动态创建 PDF 表单。
  • 安全功能包括能够加密、设置密码保护和数字签名 PDF 文档,以确保数据隐私和防止未经授权的访问。

有关更多信息,请参阅 IronPDF 文档

IronPDF 的安装:

要安装 IronPDF 库,请使用包管理器控制台或 NuGet 包管理器:

Install-Package IronPdf

使用 NuGet 包管理器,搜索 "IronPDF",从相关的 NuGet 包列表中选择并下载所需的包。

IronPDF 中的随机整数

安装 IronPDF 后,您可以在代码中初始化它。 在导入所需的命名空间后,创建一个 IronPdf.HtmlToPdf 类的实例。

using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a new instance of Random
        Random random = new Random();
        // Generate a random integer between 1 and 100
        int randomNumber = random.Next(1, 101);

        // Create HTML content with the random integer
        string htmlContent = $@"
            <html>
            <head><title>Random Integer PDF</title></head>
            <body>
            <h1>Random Integer: {randomNumber}</h1>
            </body>
            </html>";

        // Create a new HtmlToPdf renderer
        var renderer = new HtmlToPdf();
        // Render the HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdf.SaveAs("output.pdf");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a new instance of Random
        Random random = new Random();
        // Generate a random integer between 1 and 100
        int randomNumber = random.Next(1, 101);

        // Create HTML content with the random integer
        string htmlContent = $@"
            <html>
            <head><title>Random Integer PDF</title></head>
            <body>
            <h1>Random Integer: {randomNumber}</h1>
            </body>
            </html>";

        // Create a new HtmlToPdf renderer
        var renderer = new HtmlToPdf();
        // Render the HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new instance of Random
		Dim random As New Random()
		' Generate a random integer between 1 and 100
		Dim randomNumber As Integer = random.Next(1, 101)

		' Create HTML content with the random integer
		Dim htmlContent As String = $"
            <html>
            <head><title>Random Integer PDF</title></head>
            <body>
            <h1>Random Integer: {randomNumber}</h1>
            </body>
            </html>"

		' Create a new HtmlToPdf renderer
		Dim renderer = New HtmlToPdf()
		' Render the HTML to a PDF
		Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF document
		pdf.SaveAs("output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

虽然 IronPDF 不直接生成随机整数,但它可以将其嵌入到 PDF 文档中。 使用 C# 内置的 Random 类生成随机数后,您可以使用 IronPDF 的功能将其添加到您的 PDFs。 将修改后的 PDF 文档保存到文件或流中,内容添加完成后。

C# 随机整数(开发人员如何使用):图 3 - 前面代码的输出 PDF

上面的屏幕显示了代码的输出。 有关更多详情,请参见 从 HTML 创建 PDF 示例

結論

总之,使用 C# 的随机整数生成加上 IronPDF 的 HtmlToPdf 功能是一个强大的方法,可以动态创建嵌入随机数据的 PDF 文档。 开发人员可以通过结合 IronPDF 的 HTML 到 PDF 转换和 C# 的随机整数功能,轻松将动态内容集成到 PDF 文档中,使报告生成、数据可视化和文档自动化有了广阔的机会。

IronPDF 的 Lite 版本包括一年软件维护、升级选项和永久许可证。 一个带水印的试用期允许用户评估产品。 有关 IronPDF 成本、许可和免费试用的更多详情,请访问 IronPDF 许可信息。 有关 Iron Software 的详情,请访问 关于 Iron Software

常見問題解答

如何在 C# 中生成隨機整數?

要在 C# 中生成隨機整數,可以使用 Random 類別。創建一個實例並使用 Next() 方法來獲取隨機整數。例如:Random random = new Random(); int randomNumber = random.Next();

我可以在 C# 中生成特定範圍內的隨機整數嗎?

是的,您可以使用 Random 類別的 Next(minValue, maxValue) 方法在特定範圍內生成隨機整數。例如:int randomNumberInRange = random.Next(1, 101);

在 C# 中使用帶有種子值的 Random 類別有什麼好處?

使用帶有種子值的 Random 類別可以生成可重複的隨機序列,這對於測試和調試非常有用。可以這樣初始化 RandomRandom random = new Random(12345);

如何確保在 C# 中執行線程安全的隨機數生成?

要在多線程環境中確保線程安全的隨機數生成,可以使用 ThreadLocal 類別為每個線程創建唯一的 Random 實例:ThreadLocal threadLocalRandom = new ThreadLocal(() => new Random());

在 C# 中生成隨機數有哪些高級技術?

要進行高級的隨機數生成技術,例如創建具有特定分佈的數字(例如高斯分佈),可以利用第三方庫,如 MathNet.Numerics。

如何在 C# 中將隨機整數嵌入到 PDF 文件中?

您可以使用 Random 類別生成隨機整數,並使用像 IronPDF 這樣的庫將它們嵌入到 PDF 中。這樣可以在 PDF 文件中創建動態內容。

如何在 C# 中將 HTML 內容轉換為 PDF?

要在 C# 中將 HTML 內容轉換為 PDF,可以使用如 IronPDF 這樣的 PDF 轉換庫。可以使用像 RenderHtmlAsPdf 的方法將 HTML 字符串轉換為 PDF 文檔。

在選擇 PDF 庫時應注意哪些關鍵特性?

強大的 PDF 庫應具備 HTML 到 PDF 轉換、圖像到 PDF 轉換、PDF 操作功能、表單處理以及加密和數字簽名等安全功能。

我可以在購買之前評估 PDF 庫嗎?

可以,許多 PDF 庫提供一個具有水印輸出的試用期供評估。您可以訪問該庫的官方網站以瞭解更多關於許可和定價選項的信息。

如何在我的 C# 項目中安裝 PDF 庫?

要在您的 C# 專案中安裝 PDF 庫,可以使用 NuGet 套件管理器。在套件管理器控制台中執行 Install-Package 命令或在 NuGet 套件管理器界面中搜索該庫。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。