首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

返回一个不重复的随机数,该如何解决

2012-03-09 
返回一个不重复的随机数C# codestring str select tpcID from tb_Topic where sbjID+idDataTable dt

返回一个不重复的随机数

C# code
string str = "select tpcID from tb_Topic where sbjID="+id;            DataTable dt = db.GetDataSet(str);            int num = dt.Rows.Count;            Random rd = new Random();            int i = rd.Next(0,num-1);            return dt.Rows[i][0].ToString();

怎么可以让返回的i不重复?

[解决办法]
每次都把i装到list里,
if(!list.contains(i.Tostring())){return dt.Rows[i][0].ToString();


}
[解决办法]
存储到集合中,判断集合中是否存在,存在就继续随机
[解决办法]
可以先生成一个随机数组再查询。
 public int[] GetRandomUnrepeatArray(int minValue, int maxValue, int count)
{

Random rnd = new Random();
// rnd.Next(minValue,maxValue)
int length = maxValue - minValue + 1;
byte[] keys = new byte[length];
rnd.NextBytes(keys);
int[] items = new int[length];
for (int i = 0; i < length; i++)
{
items[i] = i + minValue;
}
Array.Sort(keys, items);
int[] result = new int[count];
Array.Copy(items, result, count);
return result;
}
[解决办法]
System.Threading.Thread.Sleep(1); 让它休息会 嘿嘿
[解决办法]
存到List中,每次取出来数值后跟List遍历对比,重复就break,重新随机...
[解决办法]
int randomsheet = uncheck((int)DateTime.Now.Ticks);
 
Random rd = new Random(randonsheet);

[解决办法]
楼上很详细了
[解决办法]
随机代码有问题,调试看看
[解决办法]
List<int> iList = new List<int>();
Random r = new Random();
int i = rd.Next(0,num-1);
if(!iList.Contains(i))
{
list.Add(i);
return dt.Rows[i][0].ToString();
}





[解决办法]
探讨
List<int> iList = new List<int>();
Random r = new Random();
int i = rd.Next(0,num-1);
if(!iList.Contains(i))
{
list.Add(i);
return dt.Rows[i][0].ToString();
}

[解决办法]
Num[k]等于多少?没看到有赋值的语句


[解决办法]
还有个好玩的方法。
自己写一个Queue,但是顺序可以打乱。

把一堆数字扔进去,取随机值的时候打乱Queue,然后出队。
必然不重复啊。

热点排行