PDA

View Full Version : سوال: نوشتن یک تابع که به صورت تصادفی عدد تولید کند



mashreghi62
پنج شنبه 20 آذر 1393, 21:16 عصر
میخواهم تابع random generator را شبیه سازی کنم به صورتی که از یک تا 1000 را به صورت تصادفی تولید کند و در 1000 عددی که تولید می کند 60 درصد داده ها منحصربفرد باشند لطفا کمکم کنید. از تابع random در c# نمیخوام استفاده کنم خودم تابع رندوم را شبیه سازی کنم.

ashkufaraz
پنج شنبه 20 آذر 1393, 22:35 عصر
http://xkcd.com/221/

rahnema1
پنج شنبه 20 آذر 1393, 23: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);