int配列を生成し、長さは100であり、ランダムに1〜100を挿入し、繰り返すことはできない.
回答:
Randomクラスは、特定のランダム統計要件を満たすデジタルシーケンスを生成するデバイスである擬似乱数生成器を表す.
基本的な使い方:
デモ:*
暗号化:
簡単なタスクではRandomクラスで十分です.しかし、複雑なものにはRNGCRyptoServiceProviderのほうがいいです.
パラメータとしてフィールドまたは転送Randomを使用して、乱数の重複を回避します.
class Program{
}
整数をRandomに渡す.Next()の場合,得られた結果は0からmaxValue−1の範囲であった.
ToArrayは、文の列挙可能なアルファベットを文字列に再変換し、最終結果:ランダム文字列を生成します.
ランダムバイト配列を取得するためにRandomタイプでNextBytesメソッドを呼び出します.各バイトの小数は0~255の範囲です.
乱数整数を使用して予めリストを埋めておきます.
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
Randomクラスは、特定のランダム統計要件を満たすデジタルシーケンスを生成するデバイスである擬似乱数生成器を表す.
基本的な使い方:
// 。
byte[] bytes = new byte[5];
rand.NextBytes(bytes);
// 。
Console.Write("{0,15:N0}", rand.Next());
// 。
Console.Write("{0,8:N0}", rand.Next(101));
// 。
Console.Write("{0,8:N0}", rand.Next(50, 101));
// 0.0 1.0 。
Console.Write("{0,8:N3}", rand.NextDouble());
Console.Write("{0,8:N3}", rand.NextDouble() * 5);
デモ:*
using System;
class Program
{
static void Main()
{
// Random .
Random random = new Random();
// 3 .
// 5,6,7,8 9.
Console.WriteLine("RANDOM: " + random.Next(5, 10));
Console.WriteLine("RANDOM: " + random.Next(5, 10));
Console.WriteLine("RANDOM: " + random.Next(5, 10));
}
}
暗号化:
簡単なタスクではRandomクラスで十分です.しかし、複雑なものにはRNGCRyptoServiceProviderのほうがいいです.
using System;
class Program
{
static void Main()
{
// Random .
UseStatic();
// .
// .
UseStatic();
}
static Random _random = new Random();
static void UseStatic()
{
// 。
int result = _random.Next();
Console.WriteLine("STATIC RANDOM: " + result);
}
}
パラメータとしてフィールドまたは転送Randomを使用して、乱数の重複を回避します.
class Program{
static void Main()
{
Test();
Test();
Test();
}
static void Test()
{
/ 。
// , 。
var random = new System.Random();
System.Console.WriteLine("CURRENT: " + random.Next());
}
}
整数をRandomに渡す.Next()の場合,得られた結果は0からmaxValue−1の範囲であった.
using System;
class Program
{
static void Main()
{
F();
F();
F();
F();
F();
F();
}
static Random _r = new Random();
static void F()
{
int n = _r.Next(5);
// 0,1,2,3 4。.
Console.WriteLine(n);
}
}
ToArrayは、文の列挙可能なアルファベットを文字列に再変換し、最終結果:ランダム文字列を生成します.
using System;
using System.Linq;
class Program
{
static void Main()
{
const string original = "senators";
Random num = new Random();
// char 。.
string rand = new string(original.ToCharArray().
OrderBy(s => (num.Next(2) % 2) == 0).ToArray());
Console.WriteLine("original: {0}\r
rand: {1}",
original,
rand);
Console.Read();
}
}
ランダムバイト配列を取得するためにRandomタイプでNextBytesメソッドを呼び出します.各バイトの小数は0~255の範囲です.
using System;
class Program
{
static void Main()
{
// .
byte[] array = new byte[8];
// Random class NextBytes 。
// 。.
Random random = new Random();
random.NextBytes(array);
Display(array);
random.NextBytes(array);
Display(array);
}
static void Display(byte[] array)
{
// .
foreach (byte value in array)
{
Console.Write(value);
Console.Write(' ');
}
Console.WriteLine();
}
}
乱数整数を使用して予めリストを埋めておきます.
using System;
using System.Collections.Generic;
using System.Diagnostics;
class Program
{
static Random _random = new Random();
static List _randomCache = new List();
static void AddRandoms()
{
// .
for (int i = 0; i < 1000; i++)
{
_randomCache.Add(_random.Next());
}
}
const int _max = 10000000;
static void Main()
{
// int.
AddRandoms();
// int.
var s1 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
int random = _random.Next();
if (random < 0)
{
return;
}
}
s1.Stop();
// int.
var s2 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
int random = _randomCache[i % _randomCache.Count];
if (random < 0)
{
return;
}
}
s2.Stop();
Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
}
}