int配列を生成し、長さは100であり、ランダムに1〜100を挿入し、繰り返すことはできない.

5066 ワード

回答:
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"));
    }
}