下列程式碼範例顯示如何使用 RNGCryptoServiceProvider 類別建立亂數。
'The following sample uses the Cryptography class to simulate the roll of a dice.
Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
Class RNGCSP
' Main method.
Public Shared Sub Main()
' Roll the dice 30 times and display
' the results to the console.
Dim x As Integer
For x = 0 To 30
Console.WriteLine(RollDice(6))
Next x
End Sub 'Main
' This method simulates a roll of the dice. The input parameter is the
' number of sides of the dice.
Public Shared Function RollDice(NumSides As Integer) As Integer
' Create a byte array to hold the random value.
Dim randomNumber(0) As Byte
' Create a new instance of the RNGCryptoServiceProvider.
Dim Gen As New RNGCryptoServiceProvider()
' Fill the array with a random value.
Gen.GetBytes(randomNumber)
' Convert the byte to an integer value to make the modulus operation easier.
Dim rand As Integer = Convert.ToInt32(randomNumber(0))
' Return the random number mod the number
' of sides. The possible values are zero-
' based, so we add one.
Return rand Mod NumSides + 1
End Function 'RollDice
End Class 'CryptoMemoryStream
//The following sample uses the Cryptography class to simulate the roll of a dice.
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
class RNGCSP
{
// Main method.
public static void Main()
{
// Roll the dice 30 times and display
// the results to the console.
for(int x = 0; x <= 30; x++)
Console.WriteLine(RollDice(6));
}
// This method simulates a roll of the dice. The input parameter is the
// number of sides of the dice.
public static int RollDice(int NumSides)
{
// Create a byte array to hold the random value.
byte[] randomNumber = new byte[1];
// Create a new instance of the RNGCryptoServiceProvider.
RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();
// Fill the array with a random value.
Gen.GetBytes(randomNumber);
// Convert the byte to an integer value to make the modulus operation easier.
int rand = Convert.ToInt32(randomNumber[0]);
// Return the random number mod the number
// of sides. The possible values are zero-
// based, so we add one.
return rand % NumSides + 1;
}
}
// The following sample uses the Cryptography class
// to simulate the roll of a dice.
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Security::Cryptography;
int RollDice(int numberSides)
{
// Create a byte array to hold the random value.
array<Byte>^ randomNumber = gcnew array<Byte>(1);
// Create a new instance of the RNGCryptoServiceProvider.
RNGCryptoServiceProvider^ cryptoProvider =
gcnew RNGCryptoServiceProvider();
// Fill the array with a random value.
cryptoProvider->GetBytes(randomNumber);
// Convert the byte to an integer value to make the modulus operation
// easier.
int rand = Convert::ToInt32(randomNumber[0]);
// Return the random number mod the number of sides. The possible
// values are zero-based, so we add one.
return (rand % numberSides) + 1;
}
int main()
{
// Roll the dice 30 times and display
// the results to the console.
for (int i = 0; i <= 30; i++)
{
Console::WriteLine(RollDice(6));
}
}