ランダムに使用すると、DateTime.Nowから派生したシードで初期化されます。これを使用して0〜4の数値を生成します(除外されます)。同じ数字を得る時間の25%
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
Random x= new Random();
List<int> ints = new List<int>();
for(int i=0; i< 100; i++) ints.Add(x.Next(4));
Console.WriteLine(string.Join(", ",ints));
}
}
出力(再フォーマット):
3, 0, 1, 1, 1, 1, 3, 0, 2, 0, 1, 2, 1, 0, 3, 1, 3, 0, 2, 2, 3, 1, 1, 2, 1,
2, 3, 3, 2, 3, 3, 2, 0, 3, 3, 3, 0, 0, 3, 0, 2, 1, 3, 3, 1, 0, 2, 1, 3, 0,
2, 2, 3, 3, 1, 1, 2, 3, 3, 2, 2, 0, 2, 2, 1, 2, 2, 1, 1, 3, 1, 3, 1, 2, 0,
2, 2, 1, 0, 1, 3, 1, 0, 1, 1, 1, 2, 0, 2, 1, 1, 0, 0, 0, 1, 2, 3, 0, 2, 2
それは別のものを生成します。あなたはただ運が良かったです。
宣言Random x=new Random()
(badname btw)を使用する場所の外側に移動する必要があります。繰り返し作成しないようにしてください。おそらく、あなたの時間に基づいて「異なる」種子のために同様のランを得るでしょう。ランダムに(偶然に)異なるシードランで同じ100桁を持つことができます。ランダムは、異なることを意味するわけではありません。特に、ランダム性をすべてマッピングするために4つの値しか使用しない場合です。
コメントで発言した後 - 異なるランダムシードのために「同じ」開始のシーケンスを示しています
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
static IEnumerable<int> FirstNumbersFromSeed(int seed, int num)
{
var r = new Random(seed);
for (int i=0;i<num;i++)
yield return r.Next(4);
}
public static void Main()
{
Dictionary<string,List<int>> dict = new Dictionary<string,List<int>>();
int num = 5;
for (int i =0;i<2000; i++)
{
var key = string.Join(",",FirstNumbersFromSeed(i,num));
if (dict.ContainsKey(key)) dict[key].Add(i);
else dict[key] = new List<int>(i);
}
foreach(var kvp in dict.Where(d => d.Value.Count > 1))
Console.WriteLine(string.Join(", ",kvp.Key) + " same first " + num + " values for seed with ints: " + string.Join(",",kvp.Value));
}
}
出力:
だから、あなたが同じをお届けについて305「衝突」を持っている
2,3,3,2,0 same first 5 values for seed with ints: 239,890
0,0,1,3,2 same first 5 values for seed with ints: 1463,1576
3,1,0,3,0 same first 5 values for seed with ints: 540,653,1876
1,1,1,2,1 same first 5 values for seed with ints: 656,769,895
<snipped 300 more output lines>
1,0,1,3,3 same first 5 values for seed with ints: 1862,1988
0から4(無制限)のランダム値を描画する場合は、0から2000までのシードの「ランダム」値を開始します。
あなたはどのように使用しているかについて前提を設定しています。おそらく彼らは詐欺師に問題を起こしているでしょう。 –
@MartinSmithは、異なるシードを使用し、同じ最初の5つの乱数を順番に生成することで、ランダムから「同じ」シーケンスを表示するコードを追加しました –