111,095
社区成员




List<int> result = new List<int>();
int max = 985245;
int seed = Math.Abs(Guid.NewGuid().GetHashCode() % max);
for (int i = 0; i < max; i++)
{
int value = (30637 * i + seed) % max;
result.Add(value);
}
var distinct = result.Distinct().ToList();
比如这个,distinct.Count不等于result.Count
30637是质数[/quote]
你都溢出了还谈什么?List<int> result = new List<int>();
int max = 985245;
int seed = Math.Abs(Guid.NewGuid().GetHashCode() % max);
for (int i = 0; i < max; i++)
{
int value = (30637 * i + seed) % max;
result.Add(value);
}
var distinct = result.Distinct().ToList();
比如这个,distinct.Count不等于result.Count
30637是质数class Tests
{
static void Main()
{
Transformer t = new Transformer(0, 4);
int i1 = t[1]; // 3
int i2 = t[2]; // 4
int i3 = t[3]; // 2
int i4 = t[4]; // 1
int i5 = t[2]; // 4
}
}
class Transformer
{
readonly int[] array;
public Transformer(int seed, int max)
{
array = Enumerable.Range(1, max).ToArray();
Random random = new Random(seed);
for (int i = 0; i < array.Length; i++)
{
int j = random.Next(i, array.Length);
int swap = array[i]; array[i] = array[j]; array[j] = swap;
}
}
public int this[int value]
{
get {return array[value - 1];}
}
}