mashreghi62
پنج شنبه 20 آذر 1393, 22:16 عصر
میخواهم تابع random generator را شبیه سازی کنم به صورتی که از یک تا 1000 را به صورت تصادفی تولید کند و در 1000 عددی که تولید می کند 60 درصد داده ها منحصربفرد باشند لطفا کمکم کنید. از تابع random در c# نمیخوام استفاده کنم خودم تابع رندوم را شبیه سازی کنم.
ashkufaraz
پنج شنبه 20 آذر 1393, 23:35 عصر
http://xkcd.com/221/
rahnema1
جمعه 21 آذر 1393, 00:42 صبح
سلام
به این شکل میشه تولید کرد
int[] RandomArray = Enumerable.Range(1,1000).ToArray();
Random rnd = new Random();
byte[] key = new byte[1000];
rnd.NextBytes(key);
Array.Sort(key,RandomArray);
int[] mabaghi = new int[400];
bool[] index = new bool[400];
Array.Copy(RandomArray, 600, mabaghi, 0, 400);
int idxrnd;
int i = 600;
while (i < 999) {
idxrnd = rnd.Next(0,400);
if (index[idxrnd]) {
RandomArray[i++]=mabaghi[idxrnd];
}
else{
RandomArray[i++]=mabaghi[idxrnd];
RandomArray[i++]=mabaghi[idxrnd];
index[idxrnd] = true;
}
}
if (i < 1000) {
RandomArray[i] = RandomArray[rnd.Next(600, 999)];
}
rnd.NextBytes(key);
Array.Sort(key, RandomArray, 600, 400);
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.