string strid = "111,222,333,444,555,666,777,888,";
string[] ranstr = (strid).Split(',');
string ranstr2 = ranstr[new Random().Next(0, ranstr.Length - 1)];我这样写的,只能抽一个.
我要随机抽3个不同的呢?
谁能帮忙改成下面这样的函数.谢谢.ranstr(string str,int n)//str 像上面的strid的内容,比如"111,222,333,". n 是随机抽取个数.
{
}注意,随机抽取的内容不要是重复的哦.
string[] ranstr = (strid).Split(',');
string ranstr2 = ranstr[new Random().Next(0, ranstr.Length - 1)];我这样写的,只能抽一个.
我要随机抽3个不同的呢?
谁能帮忙改成下面这样的函数.谢谢.ranstr(string str,int n)//str 像上面的strid的内容,比如"111,222,333,". n 是随机抽取个数.
{
}注意,随机抽取的内容不要是重复的哦.
解决方案 »
- 请问string cmdText = "Update UserInfo set pass='{0}' where userId='{1}'";是什么意思?
- C#能否制作自定义图标按钮
- webbrowser脚本问题。
- C#设计器自动生成的代码顺序如何控制?
- 字符串包括字符,这样说是对的吗?
- 求手机正则表达式一个
- DataGrid在运行时看不见
- 怎样增加一个gsyid=5的值作为listbox的默认值?
- 好消息与大家分享!!IT 俱乐部活动 上海徐家汇美罗大厦
- 运行一个存储过程(耗时30秒),发生错误,请高手指点!
- 一个系统报错,看不懂什么意思!
- 数据库的问题,我删一条记录,要求所有以他的ID为外健的精据都删掉。
循环3次把结果放数组里不就得了,不过可能会有重复,做个check
{
ArrayList al=new ArrayList();
string ranstr=str;
int i1=0;
while(i1<n)
{
string ranstr2 = ranstr[new Random().Next(0, ranstr.Length - 1)];
if(!al.Contains(ranstr2))
{
al.Add(ranstr2);
i1++;
}
}
return al;
}
/// <summary>
/// 获取随机的字符串
/// </summary>
/// <param name="str">要获取的字符串列,用逗号隔开</param>
/// <param name="count">要获取的个数</param>
/// <returns></returns>
static string[] GetRndString(string str, int count)
{
List<string> strs = new List<string>();
List<string> buffer = new List<string>();
strs.AddRange(str.Split(',')); Random rnd = new Random();
int index = 0;
while (index < count && strs.Count > 0)
{
int offset = rnd.Next(0, strs.Count);
buffer.Add(strs[offset]); //移除已获取到的数据,以避免重复获取
strs.RemoveAt(offset);
}
return buffer.ToArray();
}
使用示例
string[] rndStr = GetRndString("111,222,333,444,555,666,777,888", 4);
//移除已获取到的数据,以避免重复获取
strs.RemoveAt(offset);
index ++;